上学笔记一88bifa必发唯一官网

1.该属性允许访问在开发银行业前历程时在命令行上钦定的程序名和其它参数。程序名能够(但不是必须)包涵路径消息。
使用
Environment.GetCommandLineArgs()方法可寻找在字符串数组中分析和仓库储存的命令行消息。

C#读书笔记壹,

1.该属性允许访问在运行当前经过时在命令行上点名的程序名和任何参数。程序名能够(但不是必须)包罗路线新闻。
使用
Environment.GetCommandLineArgs()方法可找寻在字符串数组中剖析和积存的命令行新闻。

string cmd = Environment.CommandLine;
Console.WriteLine(cmd);

2.decimal类型和C#的浮点类型的区分在于,decimal类型的基数是拾进制的,浮点类型的基数是2进制的。3个decimal要代表成±N×拾k(k次方,-2捌<=k<=0),个中N是玖陆bit的八个正整数。而贰个浮点数是±N×2k(k次方)的任意数,个中N是用固定数量(float是二四,double是5三)的bit表示一个正整数,k是-14玖~+10四(float)恐怕-107五~+970(double)的其余整数。

3.享有的string类型的多寡,不管是还是不是字符串字面量,都是不可变的(恐怕说是不可修改的),举个例子,你十分小概将字符串“Come
As You Are”改换为“Come As You
Age”。也正是说,你不可能修改动量最初引用的数码,只可以重复对变量举行赋值,让它指向内部存储器中的二个新岗位。

(一)能够在四个字符串前边使用@符号,指明转义类别不被拍卖,那样生成结果是三个逐字字符串字面量,它不唯有将反斜杠当作普通字符管理,而且还会逐字解释说有空白字符。

(二)输出新的一行所需的字符,要选拔“\r\n”那四个字符组合,也得以应用Environment.NewLine。

Console.WriteLine(@"begin            
                   /\              
                  /  \              
                 /    \
                /______\
end");

4.char协助四种格式的赋值,char 能够隐式转变为
ushort、int、uint、long、ulong、float、double 或 decimal。
然则,不设有从任何类型到 char 类型的隐式调换。

char[] chars = new char[4];
chars[0] = 'X'; // 字符文字
chars[1] = '\x0058'; // 十六进制
chars[2] = (char)88; // 数字转化
chars[3] = '\u0058'; // Unicode
foreach (char c in chars)
{
Console.Write(c + " ");
}
Console.WriteLine((ushort)'\x0020');
Console.WriteLine(0x2A); //在表示16进制的数字中,需要‘0x’作为前缀
Console.WriteLine("0x{0:X}", 42); //使用x或X代表把一个10进制数转换乘16进制,大小写决定了十六进制的显示字母的大小形式
Console.WriteLine("\0,N"); //“\0”代表Null

5.在.Net贰.0中,能够接纳default()运算符来推断一种数据类型的暗中同意值。

6.数组分为普通(壹维)数组,多维数组,交错数组(可变数组,即数组的数组,交错数组须要为当中的种种数组都创立贰个数组实例),其宣称格局如下。

(1)使用Length重回数组成分的总和,因而,假诺你有3个多维数组,比如大小为2x三x叁的cells[,,]数组,那么Length会重返成分总量18。可使用Rank确认数组的维度,可使用GetLength(int)确认某维度的因素总量。

(2)在应用Array.BinarySearch()方法在此之前,有需要对数组举办排序,借使值不升序举办排序,会回到不科学的目录。

(3)Array.Clear()方法不会删除数组的成分,而且不将长度设为零。数组大小是一定的无法修改,所以Clear()方法将数组中的每一种成分都设为其品种的暗许值(false、0。null)。

string[] language = { "C#", "COBOL", "Java", "C++", "Visual Basic", "Pascal", "Fortran", "Lisp", "J#" };
int[,] cells = { { 1, 0, 2 }, { 1, 2, 0 }, { 1, 2, 1 } };
int[][] cells2 = new int[4][] { new int[4], new int[3], new int[2], new int[1] };

Array.Sort(language);
string searchString = "COBOL";
int index = Array.BinarySearch(language, searchString);
Console.WriteLine("The wave of the future, {0}, is at index {1}.", searchString, index);
Console.WriteLine();
Console.WriteLine("{0,-20}{1,-20}", "First Element", "Last Element");
Console.WriteLine("{0,-20}{1,-20}", "-------------", "------------");
Console.WriteLine("{0,-20}{1,-20}", language[0], language[language.Length - 1]);
Array.Reverse(language);
Console.WriteLine("{0,-20}{1,-20}", language[0], language[language.Length - 1]);
Array.Clear(language, 0, language.Length);
Console.WriteLine("{0,-20}{1,-20}", language[0], language[language.Length - 1]);
Console.WriteLine("After clearing, the array size is: {0}", language.Length);
Trace.Assert(4.2f != 4.2); // Trace类提供一组方法和属性,帮助您跟踪代码的执行

7.goto 语句:其将程控直接传送给标识语句。

(一)goto 的三个平日用法是将调节传递给一定的 switch-case 标签或 switch
语句中的暗中同意标签。

(二)goto 语句还用于跳出深嵌套循环。

注意:纵然如此也足以在switch语句之外使用 goto
,但它们常常会导致较差的程序结构,应该用壹种更便于懂的构造采纳代它,还要注意的是,不能够用
goto 语句从switch
语旬的外部跳到switch语句内部的一个标签。一般的话,C#不准goto到有个别东西里面,只尤许它在某些东西的内即便用,大概用于跳出有个别东西。通过那个范围,C#幸免了在别的语言中恐怕遭受的大部滥用goto的景况.

static void TestGoto()
{
    Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large");
    Console.Write("Please enter your selection: ");
    int n = Console.Read();
    int cost = 0;
    switch (n)
    {
        case 1:
            cost += 25;
            break;
        case 2:
            cost += 25;
            goto case 1;
        case 3:
            cost += 50;
            goto case 1;
        default:
            Console.WriteLine("Invalid selection.");
            break;
    }
    if (cost != 0)
    {
        Console.WriteLine("Please insert {0} cents.", cost);
    }
    Console.WriteLine("Thank you for your business.");
    Console.WriteLine("Press any key to exit.");
}

static void TestGoto2()
{
    int x = 200, y = 4;
    int count = 0;
    string[,] array = new string[x, y];
    for (int i = 0; i < x; i++)
        for (int j = 0; j < y; j++)
            array[i, j] = (++count).ToString();
    Console.Write("Enter the number to search for: ");
    string myNumber = Console.ReadLine();
    for (int i = 0; i < x; i++)
        for (int j = 0; j < y; j++)
            if (array[i, j].Equals(myNumber))
                goto Found;
    Console.WriteLine("The number {0} was not found.", myNumber);
    goto Finish;
    Found:
    Console.WriteLine("The number {0} is found.", myNumber);
    Finish:
    Console.WriteLine("End of search.");
    Console.WriteLine("Press any key to exit.");
}

8.按位运算符:假定有三个数,按位运算符从最右侧的位初叶,逐位举行逻辑运算,直到最右侧的位结束,三个职位处的值壹会被视为
true,值0会被视为false。1二与七的2进制表示为:00001100,0000011一;所以只要对几个值奉行按位AND(&)运算,就能逐位相比第4个操作数数(1二)和第2个操作数(柒),获得贰进制值00000100,也便是10进制的四。此外那七个值的按位OLAND(|)运算结果是00001111,也正是十进制的一5。按位XOTiggo(^)结果是0000101一,也正是10进制的11。其衡量标准“&”都为true才是true,“|”有一个为true才为true,“^”仅有三个为true才为true。

byte and, or, xor;
and = 12 & 7;//按位运算符也可以与赋值运算符合并,如 and |= 7;
or = 12 | 7;
xor = 12 ^ 7;
Console.WriteLine("12和7的按位运算结果,and={0},or={1},xor={2}", and, or, xor);

9.一举手一投足运算符:“<<”、“>>”用于对数字的2进制位数据开始展览活动。

const int size = 64;
char bit;
Console.Write("Enter an integer: ");
var value = ulong.Parse(Console.ReadLine());
ulong mask = 1ul << size - 1;//此处mask为2的63次方,二进制就为1的后面有63个0,而ulong的最大值为2的64次方后再减1,
for (int count = 0; count < size; count++)
{
bit = ((mask & value) > 0) ? '1' : '0';//此处mask的二进制只有第一位是1,其他为0,按位异或后,只有都是1才会大于0
Console.Write(bit);
mask >>= 1;
}
Console.WriteLine();
Console.WriteLine("-9的二进制 {0}", Convert.ToString(-9, 2));//将32位的整数转换为他的2进制字符串表现形式
Console.WriteLine("8的二进制无符号取反:{0}", ~(uint)8);//取反的类型为int、uint、long、ulong,按位取反运算符是对操作数的每一位取反。

10.正如多少个数值:在比较三个值是或不是等于的时候,浮点类型(float、double)的不正确性大概形成卓殊严重的结果。有的时候,本来应该对等的值被指鹿为马地判定为不对等。

decimal number1 = 4.2m;
float number2 = 0.1f * 42f;
double number3 = 0.1 * 42;
Console.WriteLine("number1=number2 : {0}", (float)number1 == number2);
Console.WriteLine("number2=number3 : {0}", number2 == number3);

11.递增与递减运算符的施用注意:递增或递减运算符的职位决定了所赋的值是操作数总计在此之前依旧之后的值,而那会影响代码的周转,尽管希望result的值包涵递增(或递减)总计的结果,要求将操作符放在想要递增的变量以前。可是无论是前缀后依旧后缀,变量值都会转移。

12.逻辑布尔运算符,有And(&&)、Or(||)、XORAV4(^)、Not(!),在那之中^是异或运算符,若使用于三个布尔操作数,那么只有在四个操作数中仅有八个为true前提下,XOENCORE运算符才会重回true。

13.C#预管理器指令是在编写翻译时调用的,预管理器指令告诉C#编写翻译器要编写翻译那多少个代码,并提出什么管理特定的荒唐和警示。也足以是差异平台之间的差异,比方在windows和linux中用#if分化对待不一致连串的API;预处理器指令也足以在调度中利用,比方用#if
debug指令将调节和测试代码包围起来。预管理器指令为
#if(#endif)、#elif、#else、#define(注明指令)、#under(裁撤费物价指数令定义)、#error(钦命生成错误)、#warning(内定生成警告)、#pragma(禁止使用或复苏
#warning指令)、#line(改换编写翻译器在报告错误或警示时展现的行号)、#region(#endregion)。

14. foreach循环时期,编写翻译器禁止修改迭代变量。

————————–以上内容听说《C#本质论 第2版》进行整治

1.
该属性允许访问在起步当前进度时在命令行上钦命的程序名和任何参数。程序名能够(但不是必须)包括路线音讯。
使用…

string cmd = Environment.CommandLine;
Console.WriteLine(cmd);

2.decimal类型和C#的浮点类型的差别在于,decimal类型的基数是10进制的,浮点类型的基数是2进制的。多少个decimal要代表成±N×十k(k次方,-2八<=k<=0),当中N是九陆bit的三个正整数。而三个浮点数是±N×2k(k次方)的大肆数,在那之中N是用固定数量(float是贰4,double是⑤三)的bit表示多少个正整数,k是-14玖~+10四(float)可能-107五~+970(double)的别的整数。

3.怀有的string类型的数目,不管是或不是字符串字面量,都以不可变的(或许说是不可修改的),比方,你不容许将字符串“Come
As You Are”改变为“Come As You
Age”。也正是说,你不可能改改动量最初引用的多寡,只好重新对变量实行赋值,让它指向内部存款和储蓄器中的三个新职务。

(壹)可以在二个字符串前边使用@符号,指明转义类别不被处理,那样生成结果是叁个逐字字符串字面量,它不光将反斜杠当作普通字符管理,而且还会逐字解释说有空白字符。

(二)输出新的一条龙所需的字符,要采纳“\r\n”那多少个字符组合,也得以动用Environment.NewLine。

Console.WriteLine(@"begin            
                   /\              
                  /  \              
                 /    \
                /______\
end");

4.char扶助四种格式的赋值,char
能够隐式转变为 ushort、int、uint、long、ulong、float、double 或
decimal。 可是,不存在从其余品种到 char 类型的隐式转变。

char[] chars = new char[4];
chars[0] = 'X'; // 字符文字
chars[1] = '\x0058'; // 十六进制
chars[2] = (char)88; // 数字转化
chars[3] = '\u0058'; // Unicode
foreach (char c in chars)
{
Console.Write(c + " ");
}
Console.WriteLine((ushort)'\x0020');
Console.WriteLine(0x2A); //在表示16进制的数字中,需要‘0x’作为前缀
Console.WriteLine("0x{0:X}", 42); //使用x或X代表把一个10进制数转换乘16进制,大小写决定了十六进制的显示字母的大小形式
Console.WriteLine("\0,N"); //“\0”代表Null

5.在.Net二.0中,能够采取default()运算符来决断一种数据类型的默许值。

6.数组分为普通(一维)数组,多维数组,交错数组(可变数组,即数组的数组,交错数组要求为个中的各种数组都创制三个数组实例),其声称方式如下。

(一)使用Length重临数组元素的总额,因而,如若你有二个多维数组,比如大小为2x3x三的cells[,,]数组,那么Length会重回成分总量1八。可利用Rank确认数组的维度,可利用GetLength(int)确认某维度的成分总的数量。

(二)在行使Array.BinarySearch()方法此前,有须要对数组实行排序,要是值不升序进行排序,会回到不得法的目录。

(三)Array.Clear()方法不会删除数组的要素,而且不将长度设为零。数组大小是确定地点的无法修改,所以Clear()方法将数组中的每种成分都设为其品种的私下认可值(false、0。null)。

string[] language = { "C#", "COBOL", "Java", "C++", "Visual Basic", "Pascal", "Fortran", "Lisp", "J#" };
int[,] cells = { { 1, 0, 2 }, { 1, 2, 0 }, { 1, 2, 1 } };
int[][] cells2 = new int[4][] { new int[4], new int[3], new int[2], new int[1] };

Array.Sort(language);
string searchString = "COBOL";
int index = Array.BinarySearch(language, searchString);
Console.WriteLine("The wave of the future, {0}, is at index {1}.", searchString, index);
Console.WriteLine();
Console.WriteLine("{0,-20}{1,-20}", "First Element", "Last Element");
Console.WriteLine("{0,-20}{1,-20}", "-------------", "------------");
Console.WriteLine("{0,-20}{1,-20}", language[0], language[language.Length - 1]);
Array.Reverse(language);
Console.WriteLine("{0,-20}{1,-20}", language[0], language[language.Length - 1]);
Array.Clear(language, 0, language.Length);
Console.WriteLine("{0,-20}{1,-20}", language[0], language[language.Length - 1]);
Console.WriteLine("After clearing, the array size is: {0}", language.Length);
Trace.Assert(4.2f != 4.2); // Trace类提供一组方法和属性,帮助您跟踪代码的执行

7.goto
语句:其将程控间接传送给标识语句。

(1)goto
的1个一般性用法是将调整传递给一定的 switch-case 标签或 switch
语句中的暗中认可标签。

(二)goto
语句还用于跳出深嵌套循环。

注意:纵然如此也得以在switch语句之外使用
goto
,但它们平常会导致较差的程序结构,应该用壹种更便于懂的构造选择代它,还要小心的是,无法用
goto 语句从switch
语旬的外表跳到switch语句内部的多少个标签。一般的话,C#禁止goto到有些东西里面,只尤许它在某些东西的内固然用,可能用于跳出有些东西。通过那么些界定,C#幸免了在其余语言中也许境遇的超越约得其半滥用goto的意况.

static void TestGoto()
{
    Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large");
    Console.Write("Please enter your selection: ");
    int n = Console.Read();
    int cost = 0;
    switch (n)
    {
        case 1:
            cost += 25;
            break;
        case 2:
            cost += 25;
            goto case 1;
        case 3:
            cost += 50;
            goto case 1;
        default:
            Console.WriteLine("Invalid selection.");
            break;
    }
    if (cost != 0)
    {
        Console.WriteLine("Please insert {0} cents.", cost);
    }
    Console.WriteLine("Thank you for your business.");
    Console.WriteLine("Press any key to exit.");
}

static void TestGoto2()
{
    int x = 200, y = 4;
    int count = 0;
    string[,] array = new string[x, y];
    for (int i = 0; i < x; i++)
        for (int j = 0; j < y; j++)
            array[i, j] = (++count).ToString();
    Console.Write("Enter the number to search for: ");
    string myNumber = Console.ReadLine();
    for (int i = 0; i < x; i++)
        for (int j = 0; j < y; j++)
            if (array[i, j].Equals(myNumber))
                goto Found;
    Console.WriteLine("The number {0} was not found.", myNumber);
    goto Finish;
    Found:
    Console.WriteLine("The number {0} is found.", myNumber);
    Finish:
    Console.WriteLine("End of search.");
    Console.WriteLine("Press any key to exit.");
}

8.按位运算符:假定有五个数,按位运算符从最左侧的位早先,逐位进行逻辑运算,直到最右侧的位停止,叁个职位处的值1会被视为
true,值0会被视为false。1二与七的二进制表示为:00001100,0000011壹;所以只要对八个值实施按位AND(&)运算,就能逐位比较第多少个操作数数(12)和第一个操作数(七),获得贰进制值00000十0,也正是10进制的4。此外那七个值的按位OXC60(|)运算结果是0000111一,也正是十进制的一5。按位XOCR-V(^)结果是0000101一,也便是十进制的1壹。其剖断规范“&”都为true才是true,“|”有一个为true才为true,“^”仅有贰个为true才为true。

byte and, or, xor;
and = 12 & 7;//按位运算符也可以与赋值运算符合并,如 and |= 7;
or = 12 | 7;
xor = 12 ^ 7;
Console.WriteLine("12和7的按位运算结果,and={0},or={1},xor={2}", and, or, xor);

9.移动运算符:“<<”、“>>”用于对数字的贰进制位数据开始展览活动。

const int size = 64;
char bit;
Console.Write("Enter an integer: ");
var value = ulong.Parse(Console.ReadLine());
ulong mask = 1ul << size - 1;//此处mask为2的63次方,二进制就为1的后面有63个0,而ulong的最大值为2的64次方后再减1,
for (int count = 0; count < size; count++)
{
bit = ((mask & value) > 0) ? '1' : '0';//此处mask的二进制只有第一位是1,其他为0,按位异或后,只有都是1才会大于0
Console.Write(bit);
mask >>= 1;
}
Console.WriteLine();
Console.WriteLine("-9的二进制 {0}", Convert.ToString(-9, 2));//将32位的整数转换为他的2进制字符串表现形式
Console.WriteLine("8的二进制无符号取反:{0}", ~(uint)8);//取反的类型为int、uint、long、ulong,按位取反运算符是对操作数的每一位取反。

10.正如多少个数值:在相比较七个值是不是等于的时候,浮点类型(float、double)的不准确性大概引致十三分沉痛的结局。有的时候,本来应该相等的值被指鹿为马地推断为不等于。

decimal number1 = 4.2m;
float number2 = 0.1f * 42f;
double number3 = 0.1 * 42;
Console.WriteLine("number1=number2 : {0}", (float)number1 == number2);
Console.WriteLine("number2=number3 : {0}", number2 == number3);

11.递增与递减运算符的接纳注意:递增或递减运算符的职位决定了所赋的值是操作数总括此前如故后来的值,而那会影响代码的运作,固然期望result的值包涵递增(或递减)总结的结果,必要将操作符放在想要递增的变量以前。不过无论是前缀后或许后缀,变量值都会改变。

12.逻辑布尔运算符,有And(&&)、Or(||)、XOGL450(^)、Not(!),个中^是异或运算符,若选用于七个布尔操作数,那么唯有在八个操作数中仅有一个为true前提下,XO猎豹CS6运算符才会回到true。

13.C#预管理器指令是在编写翻译时调用的,预处理器指令告诉C#编写翻译器要编写翻译那么些代码,并建议什么管理特定的谬误和警告。也能够是见仁见智平桃园间的异样,举个例子在windows和linux中用#if区别对待差异系统的API;预管理器指令也足以在调节和测试中央银行使,举个例子用#if
debug指令将调试代码包围起来。预管理器指令为
#if(#endif)、#elif、#else、#define(证明指令)、#under(撤除费物价指数令定义)、#error(内定生成错误)、#warning(钦赐生成警告)、#pragma(禁止使用或复苏
#warning指令)、#line(更改编写翻译器在告诉错误或警示时显得的行号)、#region(#endregion)。

14.
foreach循环时期,编写翻译器禁止修改迭代变量。

————————–以上内容听别人说《C#本质论
第壹版》进行整理