1. Main()
static class ProgramMain方法是 C# 控制台应用程序或窗口应用程序的入口点。 (库和服务不要求将 Main 方法作为入口点。) 应用程序启动时,Main 方法是第一个调用的方法。 C# 程序中只能有一个入口点。 如果您有多个类都包含 Main 方法,则必须使用 /main 编译器选项编译您的程序,以指定用作入口点的 Main 方法。
run.ReleaseMutex();//.WaitOne 方法请求互斥体的所属权
//.ReleaseMutex 方法同样多的次数以释放互斥体的所属权
Application.EnableVisualStyles();//. VisualStyleState:启用应用程序的可视样式。
Application.SetCompatibleTextRenderingDefault(false);
/*.SetCompatibleTextRenderingDefault(Boolean):将某些控件上定义的 UseCompatibleTextRendering 属性设置为应用程序范围内的默认值。
*/
try
{
Application.Run(new MainForm());//. Run():在没有窗体的情况下,在当前线程上开始运行标准应用程序消息循环。
}
catch (System.Exception ex)
{
MessageBox.Show("Application.Run(new MainForm())未完成" + ex.Message);
}
}
else
{
MessageBox.Show("已经运行了一个实例了。");
}
}
//.ReleaseMutex 方法同样多的次数以释放互斥体的所属权
Application.EnableVisualStyles();//. VisualStyleState:启用应用程序的可视样式。
Application.SetCompatibleTextRenderingDefault(false);
/*.SetCompatibleTextRenderingDefault(Boolean):将某些控件上定义的 UseCompatibleTextRendering 属性设置为应用程序范围内的默认值。
*/
try
{
Application.Run(new MainForm());//. Run():在没有窗体的情况下,在当前线程上开始运行标准应用程序消息循环。
}
catch (System.Exception ex)
{
MessageBox.Show("Application.Run(new MainForm())未完成" + ex.Message);
}
}
else
{
MessageBox.Show("已经运行了一个实例了。");
}
}
}
函数调用参数传入与传出,函数返回值。
2.传值参数
3.传引用参数(ref)参数默认是传值的,变量的栈数据会完整地复制到目标参数中。原调用函数中的实参只是将变量的的值复制了一份给方法,实参的数值是不会改变的。调用栈在一次的末尾“展开”的时候,当初复制的那个副本会被丢弃。
以传引用的方式传递传递变量,在参数前加ref关键字使参数以传引用的方式进行传递,使得被调用的方法可以用新值来更新原始调用者的变量。调用者显示地制定目标方法可以对它接收的任何ref参数进行重新赋值,除此之外,调用者应该对传引用的变量进行初始化,因为目标方法可以直接从ref参数读取数据而不先对它们进行赋值。
class Program
{
static void Main()
{
string first="first";
string second="second";
Swap(ref first,ref second);
}
static void Swap(ref string first,ref string second)
{
string temp=first;
first=second;
second=temp;
}
}4.输出参数(out)
将一个参数单向传入一个方法(传值),或者将同时将参数输入和传出一个方法(传引用)之外,还可以将数据从一个方法内部单向传出方法。为此,代码需要使用关键字out来修饰参数类型。只需要事先声明变量而且可以不对其初始化,函数调用过后此变量自动被赋新值。
int lengt; //数据包长度,用于验证数据包的完整性
int cmd; //数据包命令类型
if (read.ReadInt32(out lengt) && read.Length == lengt && read.ReadInt32(out cmd))
{
switch (cmd){case 100:{object x;if (read.ReadObject(out x)) //如果数据包命令是 100那么 可以尝试读取一个对象{Console.WriteLine(x.GetType().ToString());}}break;}
}5.参数数组(params)
C#提供了一个特殊的关键字(params),它允许在调用一个方法时提供数量可以变的参数,而不是由方法事先固定好参数的数量。
为了具有这个功能,需要满足两点条件。第一,在方法声明的最后一个参数之前,添加一耳光params关键字;第二,在最后一个参数声明为一个数组。第三,每个方法只能最后参数定义成参数数组,所以每个方法只能有一个参数数组。第四,参数数组是可以定义为0个元素。第五,
像这样的参数数组声明之后,我们将每个参数作为参数数组的一个成员来访问,
class pathEx
{
static void Main()
{
fullname=combine(Directory.GetCurentDirectory(),"bin","config");
}
static string combine(params string[] paths)
{
string result=string.Empty;
foreach(string path in paths)
{
result=System.IO.Path.Combine(result,path);
}
return result;
}
}