纯粹语法学习

使用C#编写17种Hello World程序 
--------------------------------------------------------------------------------
 
1. A Beginners Hello World   初学者
public class HelloWorld
{
  public static void Main()
  {
    System.Console.WriteLine("HELLO WORLD");
  }
}

2. Slightly improved version   略有提高
using System;  (就这?会用命名空间?)

public class HelloWorld
{
  public static void Main()
  {
    Console.WriteLine("HELLO WORLD");
  }
}

3. Command Line Arguments
using System;

public class HelloWorld
{
  public static void Main(string[] args)   //会传参数了
  {
    Console.WriteLine(args[0]);
  }
}

4. From Constructor
using System;
public class HelloWorld
{
  public HelloWorld()
  {
    Console.WriteLine("HELLO WORLD");
  }

public static void Main()
  {
    HelloWorld hw = new HelloWorld();  //会用类了?构造?
  }
}

5. More OO
using System;
public class HelloWorld
{
  public void helloWorld()
  {
    Console.WriteLine("HELLO WORLD");
  }

public static void Main()
  {
    HelloWorld hw = new HelloWorld();
    hw.HelloWorld();   //更进一步的面向对象?会用方法了?
  }
}

6. From another class
using System;
public class HelloWorld
{
  public static void Main()
  {
    HelloWorldHelperClass hwh = new HelloWorldHelperClass();   //类里调用其它类?
    hwh.writeHelloWorld();
  }
}

public class HelloWorldHelperClass
{
  public void writeHelloWorld()
  {
    Console.WriteLine("Hello World");
  }
}

7. Inheritance
abstract class HelloWorldBase  //抽象类
{
  public abstract void writeHelloWorld();
}
class HelloWorld : HelloWorldBase  //继承----不得不严肃起来了,能抽象的已经可以做系统架构设计了!
{
  public override void writeHelloWorld()
  {
    Console.WriteLine("Hello World");
  }
}
class HelloWorldImp
{
  static void Main() {
    HelloWorldBase hwb = HelloWorld;
    HelloWorldBase.writeHelloWorld();
  }
}

8. Static Constructor
using System;
public class HelloWorld
{
  private static string strHelloWorld;

static HelloWorld()    //静态构造
  {
    strHelloWorld = "Hello World";
  }
  void writeHelloWorld()
  {
    Console.WriteLine(strHelloWorld);    }

public static void Main()
  {
    HelloWorld hw = new HelloWorld();   //需要吗?
    hw.writeHelloWorld();   //平常我会觉得很可笑----居然写得这么啰嗦

}
}

9. Exception Handling
using System;

public class HelloWorld
{
  public static void Main(string[] args)
  {
    try
    {
      Console.WriteLine(args[0]);
    }
    catch(IndexOutOfRangeException e)   //会用异常处理了,但如何更好回收资源呢?异常接下来应该是资源回收啊?我以前也犯这种毛病,GC应该怎么更好使用,我到现在还不是很纯熟
    {
      Console.WriteLine(e.ToString());
    }
  }
}

10. Creating a DLL and using it in an application   //做组件吗?
using System;

namespace HelloLibrary
{
  public class HelloMessage
  {
    public string Message
    {
      get
      {
        return "Hello, World!!!";
      }
    }
  }
}

//------

using System;
using HelloLibrary;

namespace HelloApplication
{
  class HelloApp
  {

public static void Main(string[] args)
    {
      HelloMessage m = new HelloMessage();

}
  }
}

11. Using Property  
using System;
public class HelloWorld
{
  public string strHelloWorld
  {
    get   //会用属性了
    {
      return "Hello World";
    }
  }

public static void Main()
  {
    HelloWorld hw = new HelloWorld();
    Console.WriteLine(cs.strHelloWorld);
  }
}

12. Using Delegates    //委托!
using System;
class HelloWorld
{
  static void writeHelloWorld() {
    Console.WriteLine("HelloWorld");
  }
  static void Main() {
    SimpleDelegate d = new SimpleDelegate(writeHelloWorld);  //委托?!?!
    d();   //语法的确这么写,但含义无法理解;因为实在体会不出好处来
  }
}

13. Using Attributes    //我不会!补习去!
#define DEBUGGING

using System;
using System.Diagnostics;

public class HelloWorld : Attribute
{
  [Conditional("DEBUGGING")]

public void writeHelloWorld()
  {
    Console.WriteLine("Hello World");
  }

public static void Main()
  {
    HelloWorld hw = new HelloWorld();

hw.writeHelloWorld();
  }
}

14. Using Interfaces   //会用接口了
using System;

interface IHelloWorld
{
  void writeHelloWorld();
}

public class HelloWorld : IHelloWorld
{
  public void writeHelloWorld()
  {
    Console.WriteLine("Hello World");
  }

public static void Main()
  {
    HelloWorld hw = new HelloWorld();

hw.writeHelloWorld();
  }
}

15. Dynamic Hello World  //我不会again!补习去again!
using System;
using System.Reflection;

namespace HelloWorldNS
{

public class HelloWorld
  {
    public string writeHelloWorld()
    {
      return "HelloWorld";
    }

public static void Main(string[] args)
    {
      Type hw = Type.GetType(args[0]);

// Instantiating a class dynamically

object[] nctorParams = new object[] {};
      object nobj = Activator.CreateInstance(hw,
               nctorParams);

// Invoking a method

object[] nmthdParams = new object[] {};
      string strHelloWorld = (string) hw.InvokeMember(
              "writeHelloWorld", BindingFlags.Default |
              BindingFlags.InvokeMethod, null,
              nobj, nmthdParams);

Console.WriteLine(strHelloWorld);
    }
  }
}

16. Unsafe Hello World   //平常我也不注意这个!到现在还不是很理解怎么Unsafe!
using System;

public class HelloWorld
{
  unsafe public void writeHelloWorld(char[] chrArray)
  {
    fixed(char *parr = chrArray)
    {
      char *pch = parr;
      for(int i=0; i<chrArray.Length; i++)
        Console.Write(*(pch+i));
    }
  }

public static void Main()
  {
    HelloWorld hw = new HelloWorld();
    char[] chrHelloWorld = new char[]
        {'H','e','l','l','o', ' ', 'W','o','r','l','d'};
    hw.writeHelloWorld(chrHelloWorld);
  }
}

17. Using InteropServices
using System;
using System.Runtime.InteropServices;

class Class1
{  //COM ,  API接口  我以前就这么低俗地理解.    其实工具会帮你生成
  [DllImport("kernel32")]
  private static extern int Beep(int dwFreq, int dwDuration);

static void Main(string[] args)
  {
    Console.WriteLine("Hello World");
    Beep(1000, 2000);
  }
}

我理解的17种C#写的Hello World程序相关推荐

  1. .NET程序员应该理解的几种软件保护方法 辛苦开发的程序需要建立有效的保护机制...

    使用.NET开发程序,因为元数据存在于程序集中,可以轻易的被反编译成源代码.在分发给客户之间,会应用加密软件混淆程序集,这样让程序集被反编译时, 理解起来困难一些,增加一点破解难度.以下列举我常见到的 ...

  2. PyTorch训练加速17种技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 文自 机器之心 作者:LORENZ KUHN 编辑:陈萍 掌握这 ...

  3. 【特征工程】17种将离散特征转化为数字特征的方法

    作者 | Samuele Mazzanti 编译 | VK 来源 | Towards Data Science "你知道哪种梯度提升算法?" "Xgboost,Light ...

  4. 使用C#编写17种Hello World程序(初学者C#测试石)

    使用C#编写17种Hello World程序(初学者C#测试石) 1. A Beginners Hello World   初学者 代码 public class HelloWorld {    pu ...

  5. PyTorch | 优化神经网络训练的17种方法

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | LORENZ KUHN 来源 | 人工智能前沿讲习 编辑 ...

  6. 让PyTorch训练速度更快,你需要掌握这17种方法

    选自efficientdl.com 作者:LORENZ KUHN 机器之心编译 编辑:陈萍 掌握这 17 种方法,用最省力的方式,加速你的 Pytorch 深度学习训练. 近日,Reddit 上一个帖 ...

  7. 17种深度强化学习算法用Pytorch实现(附链接)

    来源:新智元 本文约1300字,建议阅读5分钟. 本文为你介绍一个用PyTorch实现了17种深度强化学习算法的教程和代码库,帮助大家在实践中理解深度RL算法. [ 导读 ]深度强化学习已经在许多领域 ...

  8. 如何提高PyTorch“炼丹”速度?这位小哥总结了17种方法,可直接上手更改的那种...

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 如何提升PyTorch"炼丹"速度? 最近,有一位名叫Lorenz Kuhn的小哥,分享了他在炼丹过程中总结的17种投入 ...

  9. JavaScript--------------------jQuery中.bind() .live() .delegate() .on()的区别 和 三种方式写光棒事件 动画...

    bind(type,[data],fn) 为每个匹配元素的特定事件绑定事件处理函数. $("a").bind("click",function(){alert( ...

  10. openssl 添加自定义算法_GitHub:用PyTorch实现17种深度强化学习算法

    [新智元导读]深度强化学习已经在许多领域取得了瞩目的成就,并且仍是各大领域受热捧的方向之一.本文推荐一个用 PyTorch 实现了 17 种深度强化学习算法的教程和代码库,帮助大家在实践中理解深度 R ...

最新文章

  1. 近90%公司亏损,泡沫破裂期将至:对于AI投资人的耐心还多吗
  2. 域迁移(降级)注意事项
  3. java中取得上下文路径的方法
  4. port-forward使用示例:kubectl port-forward deployment/kubernetes-dashboard -n kubernetes-dashboard :9090
  5. wordvba编程代码大全_这几本基础编程书籍一定要看
  6. Android之Bundle类
  7. 【SpringCloud-Alibaba系列教程】14.一文教你入门RocketMQ
  8. 日常问题———安装新版zookeeper 出现Starting zookeeper ... FAILED TO START
  9. foreach 和 for 循环的区别
  10. javascript正则表达式复习
  11. Uber地图部门三员大将离职创业,要解决无人驾驶出租车的派单问题
  12. python怎样画立体图-如何用Matplotlib 画三维图的示例代码
  13. C# 中用DES 对称Key,IV 加密,前端crypto.js 解密
  14. MySQL IS NULL(IS NOT NULL)使用索引分析
  15. 软件基本功:垃圾代码是怎样产生的?
  16. 最好用的屏幕录像软件,三步实现高清录制?
  17. badboy linux 版本,jmeter/Badboy安装教程
  18. 穿越沙漠matlab,中国五大经典沙漠穿越
  19. oracle 挖掘日志,使用Oracle的Logminer工具进行日志挖掘
  20. Springcloud+Seata+nacos 分布式事务项目搭建 AT模式

热门文章

  1. Shallow Neural Network Week 3
  2. java 2015001_hbase的Java操作
  3. java infinity 处理_Java:如何执行向-Infinity而不是0的整数除法?
  4. Socket通过读取数据阻塞的解决方案
  5. java web xml配置详解_Java Servlet web xml 配置详解
  6. android画板笔锋实现
  7. linux网卡配置规范
  8. poj2373 Dividing the Path (单调队列+dp)
  9. 电脑安装系统安装不上的几个问题(解决)
  10. 获取OlapConnection连接