【卷土重来之C#学习笔记】(二)c#编程概述_anmei1912的博客-程序员ITS301

技术标签: c#  ui  c/c++  

【卷土重来之C#学习笔记】(二)c#编程概述

 

(1)开始C#,一个简单的程序Hello Word 开始    

复制代码
using System;   //使用了System的命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Simple    //声明了一个新的命名空间 ,名称为:Simple
                    //命名空间内的人和类型都是命名空间的成员
{
    class Program  //声明一个新的类,名称为:Program
                   //大括号内的为命名空间的成员
    {
        static void Main() //声明一个名称为Main的方法作为类Program的成员
                           //Main是Program类的唯一成员
                           //Main是特殊函数,编译器用它作为程序的起点
        {
        Console.WriteLine("Hello World !");//这一条组成了Main的方法体
            //使用了命名空间System中一个名称为Console的类将消息输出到屏幕窗口
            //语句可以用一个分好结束

        }
    }
}
复制代码

 

(2) 标识符

      标识符是一种字符串,用来命名变量、方法、参数 和其他程序结构。

      例如上面的 类名称: Program   他们的命名是有规定的:

       1.字母和下划线可以用在任何位置。

       2.数字不能放在首位,但是可以放在其他位置。

       [email protected]字符只能放在标识符的首位(不推荐)。

       4.标识符区分大小写   变量MyVar 跟myVar是不同的标识符。

 

(3)关键字

       关键字是用来定义C#语言的字符串记号

         例如代码中的: class   using 

        1.关键字不能用作变量名和任何形式的标识符(除非以@符号开始)。

        2.所有的关键字都有小写字母组成。

 

(4)从程序中输出文本

            1.Write和WriteLine

                相同点:两个都是Console的成员,功能都是输出字符串。

                 区别: Write是不换行直接输出  而WriteLine 是分割多行。

 

             2.格式字符串

                Write和WriteLine语句的常规形式可以有一个以上参数,多个参数用逗号隔开。

                 语法: Console.WriteLine(格式字符串(含替代标记),替换值,替换值1,替换值2,......);

                

 

                   值可以以任何顺序使用;

                    只可以再格式字符串中替换任意次;

 

                  3.格式化数字字符串

                  

                  格式说明符的语法:

 

 

                   

对齐说明符(alignment)

对齐说明符表示了字段中字符的最小宽度。对齐说明符有如下特性。

1、对齐说明符是可选的,并且使用逗号和索引号分离。// 疑问?? 大括号 {0,50} 0是索引号 50是对齐说明符 中间逗号隔开

2、它由一个正整数或负整数组成。

3、整数表示了字段使用字符的最少数量。

4、符号表示了右对齐或左对齐。正数表示右对齐,负数表示左对齐。

5、如果要表示的字符数比说明符中指定的字符数少,那么其余字符会使用空格填充;

6、如果要表示的字符数多于指定的字符数,对齐说明符会被忽略,并且使用所需的字符进行表示。

                          这段代码如下输出,两个横杠中间有10个字符

                     

格式字段(format)

格式字段指定了数字应该以哪种形式表示。例如应当被当做货币、十进制数、还是定点符号来表示。格式字段有3部分。

1、冒号后必须紧跟格式说明符,中间不能有空格。

2、格式说明符是一个字母字符,是9个内置字符格式之一。字符可以是大写或小写形式。大小写对于某些说明符来说比较重要,而对于另外一些说明符来说则不重要。

3、精度说明符是可选的,由1~2位数字组成。它的实际意义取决于格式说明符。 

以下是标准格式字符串:

 

复制代码
            //1.使用货币符号吧值格式化为货币(小数位数)
            Console.WriteLine("{0:C}",12.5); //输出:$12.50
            //2.十进制字符串,只能和正数类型配合使用,输出字符串中最少位数,如果实际数字更少,则左边以0填充
            Console.WriteLine("{0:D4}",12);  //输出:0012
            //3.带小数的十进制数字字符串(小数位置)
            Console.WriteLine("{0:F4}",12.3456789);//输出12.3457
            //4.根据值转换为定点或者科学计数法标识紧凑形式(根据值)
            Console.WriteLine("{0:G4}", 12.3456789);//输出12.35
复制代码

 

 

(5) 注释

                          //     单行注释     

                          /*     */  多行注释

                          ///    文档注释

 

 

 

 

 

 

 

 

 

----

 

Console.WriteLine 方法 (String, Object)

.NET Framework (current version)
 
其他版本
 
 

发布日期: 2016年7月

使用指定的格式信息,将指定对象(后跟当前行终止符)的文本表示形式写入标准输出流。

命名空间:    System
程序集:  mscorlib(位于 mscorlib.dll)

语法
 
 
C#
C++
F#
VB
 
[HostProtectionAttribute(SecurityAction.LinkDemand, UI = true)]
public static void WriteLine(
	string format,
	object arg0
)

参数

format
Type:  System.String

复合格式字符串(请参见“备注”)。

arg0
Type:  System.Object

要使用 format 写入的对象。

异常
 
 
Exception Condition
IOException

出现 I/O 错误。

ArgumentNullException

format 为 null

FormatException

format 中的格式规范无效。

备注
 
 

此方法使用复合格式设置功能要将对象的值转换为它的文本表示形式,并将该表示形式嵌入在字符串中的.NET framework。 生成的字符串写入到输出流。

format参数由零个或多个文本混和组成,零个或多个索引占位符称为格式项,对应于此方法的参数列表中的对象。 格式设置的过程将每个格式项替换的文本表示形式相应对象的值。

格式项的语法是{ 索引[,对齐] [:formatString]}、 它指定一个强制索引、 可选长度和对齐方式的带格式的文本,并设置控制如何对象的值的相应的格式说明符字符的一个可选的字符串的格式。

.NET Framework 提供了广泛的格式设置支持,以下的格式设置主题中的更详细地介绍。

有关行终止符的详细信息,请参阅备注部分的WriteLine不带参数的方法。

 

 

复合格式设置

.NET Framework (current version)
 
其他版本
 
 

.NET Framework 复合格式设置功能使用对象列表和复合格式字符串作为输入。 复合格式字符串由固定文本和索引占位符混和组成,其中索引占位符称为格式项,对应于列表中的对象。 格式设置操作产生的结果字符串由原始固定文本和列表中对象的字符串表示形式混和组成。

复合格式设置功能受诸如以下方法的支持:

复合格式字符串和对象列表将用作支持复合格式设置功能的方法的参数。 复合格式字符串由零个或多个固定文本段与一个或多个格式项混和组成。 固定文本是所选择的任何字符串,并且每个格式项对应于列表中的一个对象或装箱的结构。 复合格式设置功能返回新的结果字符串,其中每个格式项都被列表中相应对象的字符串表示形式取代。

可考虑使用以下 Format 代码段。

 

C#
VB
 
      string name = "Fred";
      String.Format("Name = {0}, hours = {1:hh}", name, DateTime.Now);

 

固定文本为“Name = ”和“, hours = ”。 格式项为“{0}”和“{1:hh}”,前者的索引为 0,对应于对象 myName,后者的索引为 1,对应于对象 DateTime.Now

 

每个格式项都采用下面的形式并包含以下组件:

{  index[,alignment][:formatString]}

必须使用成对的大括号(“{”和“}”)。

索引组件

强制“索引”组件(也叫参数说明符)是一个从 0 开始的数字,可标识对象列表中对应的项。 也就是说,参数说明符为 0 的格式项列表中的第一个对象,参数说明符为 1 的格式项列表中的第二个对象,依次类推。 下面的示例包括五个参数说明符,用于表示小于 10 的质数:

 

C#
VB
 
   string primes;
   primes = String.Format("Prime numbers less than 10: {0}, {1}, {2}, {3}",
                          2, 3, 5, 7 );
   Console.WriteLine(primes);
   // The example displays the following output:
   //      Prime numbers less than 10: 2, 3, 5, 7

 

通过指定相同的参数说明符,多个格式项可以引用对象列表中的同一个元素。 例如,通过指定诸如“0x{0:X} {0:E} {0:N}”的复合格式字符串,可以将同一个数值设置为十六进制、科学记数法和数字格式,如下面的示例所示。

 

C#
VB
 
   string multiple = String.Format("0x{0:X} {0:E} {0:N}",
                                   Int64.MaxValue);
   Console.WriteLine(multiple);
   // The example displays the following output:
   //      0x7FFFFFFFFFFFFFFF 9.223372E+018 9,223,372,036,854,775,807.00

 

每个格式项都可以引用列表中的任一对象。 例如,如果有三个对象,则可以通过指定类似于“{1} {0} {2}”的复合格式字符串来设置第二、第一和第三个对象的格式。 格式项未引用的对象会被忽略。 如果参数说明符指定了超出对象列表范围的项,将引发运行时 FormatException

对齐组件

可选的“对齐”组件是一个带符号的整数,指示首选的设置了格式的字段宽度。 如果“对齐”值小于设置了格式的字符串的长度,“对齐”会被忽略,并且使用设置了格式的字符串的长度作为字段宽度。 如果“对齐”为正数,字段中设置了格式的数据为右对齐;如果“对齐”为负数,字段中的设置了格式的数据为左对齐。 如果需要填充,则使用空白。 如果指定 alignment,就需要使用逗号。

下面的示例定义两个数组,一个包含雇员的姓名,另一个则包含雇员在两周内的工作小时数。 复合格式字符串使 20 字符字段中的姓名左对齐,使 5 字符字段中的工作小时数右对齐。 请注意“N1”标准格式字符串还用于设置带有小数位的小时数格式。

 

C#
VB
 
using System;

public class Example
{
   public static void Main()
   {
      string[] names = { "Adam", "Bridgette", "Carla", "Daniel",
                         "Ebenezer", "Francine", "George" };
      decimal[] hours = { 40, 6.667m, 40.39m, 82, 40.333m, 80,
                                 16.75m };

      Console.WriteLine("{0,-20} {1,5}\n", "Name", "Hours");
      for (int ctr = 0; ctr < names.Length; ctr++)
         Console.WriteLine("{0,-20} {1,5:N1}", names[ctr], hours[ctr]);

   }
}
// The example displays the following output:
//       Name                 Hours
//
//       Adam                  40.0
//       Bridgette              6.7
//       Carla                 40.4
//       Daniel                82.0
//       Ebenezer              40.3
//       Francine              80.0
//       George                16.8

 

格式字符串组件

可选的“格式字符串”组件是适合正在设置格式的对象类型的格式字符串。 如果相应的对象是数值,则指定标准或自定义的数字格式字符串;如果相应的对象是 DateTime 对象,则指定标准或自定义的日期和时间格式字符串;或者,如果相应的对象是枚举值,则指定枚举格式字符串。 如果不指定 formatString,则对数字、日期和时间或者枚举类型使用常规(“G”)格式说明符。 如果指定 formatString,则需要使用冒号。

下表列出了 .NET Framework 类库中支持预定义的格式字符串集的类型或类型的类别,并提供指向列出了支持的格式字符串的主题的链接。 请注意,字符串格式化是一个可扩展的机制,可使用该机制定义所有现有类型的新的格式字符串,并定义受应用程序定义的类型支持的格式字符串集。 有关详细信息,请参阅 IFormattable 和 ICustomFormatter 接口主题。

转义大括号

左大括号和右大括号被解释为格式项的开始和结束。 因此,必须使用转义序列显示文本左大括号或右大括号。 在固定文本中指定两个左大括号 ("{ {") 以显示一个左大括号 ("{"),或指定两个右大括号 ("}}") 以显示一个右大括号 ("}")。 按照在格式项中遇到大括号的顺序依次解释它们。 不支持解释嵌套的大括号。

解释转义大括号的方式会导致意外的结果。 例如,考虑要显示一个左大括号、一个设置为十进制数格式的数值和一个右大括号的格式项“{ { {0:D}}}”。 但是,实际是按照以下方式解释该格式项:

  1. 前两个左大括号 ("{ {") 被转义,生成一个左大括号。

  2. 之后的三个字符 ("{0:") 被解释为格式项的开始。

  3. 下一个字符 ("D") 将被解释为 Decimal 标准数值格式说明符,但后面的两个转义大括号 ("}}") 生成单个大括号。 由于得到的字符串 ("D}") 不是标准数值格式说明符号,所以得到的字符串会被解释为用于显示字符串“D}”的自定义格式字符串。

  4. 最后一个大括号 ("}") 被解释为格式项的结束。

  5. 显示的最终结果是字符串“{D}”。 不会显示本来要设置格式的数值。

在编写代码时,避免错误解释转义大括号和格式项的一种方法是单独设置大括号和格式项的格式。 也就是说,在第一个格式设置操作中显示文本左大括号,在下一操作中显示格式项的结果,然后在最后一个操作中显示文本右大括号。 下面的示例阐释了这种方法。

 

C#
VB
 
      int value = 6324;
      string output = string.Format("{0}{1:D}{2}", 
                                   "{", value, "}");
      Console.WriteLine(output);
      // The example displays the following output:
      //       {6324}                            

 

处理顺序

如果对复合格式设置方法的调用包括其值不为 IFormatProvider 的 null 参数,则运行时会调用其 IFormatProvider.GetFormat 方法来请求 ICustomFormatter 实现。 如果此方法能够返回 ICustomFormatter 实现,则将对其进行缓存以供稍后使用。

通过执行以下步骤,将参数列表中与格式项对应的每个值转换为字符串。 如果符合前三个步骤中的任一条件,则在此步骤中返回值的字符串表示形式,并且不执行后续步骤。

  1. 如果要设置格式的值为 null,则将返回空字符串 ("")。

  2. 如果 ICustomFormatter 实现可用,则运行时将调用其 Format 方法。 如果格式项中存在 formatString 值,则将向方法传递该值,或如果不存在,则将 null 和 IFormatProvider 实现一起传递。

  3. 如果该值实现 IFormattable 接口,则调用此接口的 ToString(String, IFormatProvider) 方法。 如果格式项中存在 formatString 值,则向方法传递该值;如果不存在该值,则传递 null。 按如下方式确定 IFormatProvider 参数:

  4. 调用类型的无参数的 ToString 方法(该方法将重写 Object.ToString() 或继承其基类的行为)。 在这种情况下,如果格式项中存在 formatString 组件指定的格式字符串,则将忽略该字符串。

前面的步骤执行完毕之后应用对齐。

代码示例
 
 
 

下面的示例显示使用复合格式设置创建的一个字符串和使用对象的 ToString 方法创建的另一个字符串。 两种格式设置类型产生相同的结果。

 

C#
VB
 
      string FormatString1 = String.Format("{0:dddd MMMM}", DateTime.Now);
      string FormatString2 = DateTime.Now.ToString("dddd MMMM");

 

假定当前日期是五月的星期四,那么在美国英语区域性中上述示例中的两个字符串的值都是 Thursday May 。

Console.WriteLine 提供与 String.Format 相同的功能。 这两种方法的唯一差异是 String.Format 将其结果作为字符串返回,而 Console.WriteLine将结果写入与 Console 对象关联的输出流中。 下面的示例使用 Console.WriteLine 方法将 MyInt 的值的格式设置为货币值。

 

C#
VB
 
      int MyInt = 100;
      Console.WriteLine("{0:C}", MyInt);
      // The example displays the following output 
      // if en-US is the current culture:
      //        $100.00

 

下面的示例说明为多个对象设置格式,包括用两种不同的方式为一个对象设置格式。

 

C#
VB
 
      string myName = "Fred";
      Console.WriteLine(String.Format("Name = {0}, hours = {1:hh}, minutes = {1:mm}",
            myName, DateTime.Now));
      // Depending on the current time, the example displays output like the following:
      //    Name = Fred, hours = 11, minutes = 30                 

 

下面的示例演示了对齐在格式设置中的使用方式。 设置了格式的参数放置在竖线字符 (|) 之间以突出显示得到的对齐。

 

C#
VB
 
      string myFName = "Fred";
      string myLName = "Opals";
      int myInt = 100;
      string FormatFName = String.Format("First Name = |{0,10}|", myFName);
      string FormatLName = String.Format("Last Name = |{0,10}|", myLName);
      string FormatPrice = String.Format("Price = |{0,10:C}|", myInt); 
      Console.WriteLine(FormatFName);
      Console.WriteLine(FormatLName);
      Console.WriteLine(FormatPrice);
      Console.WriteLine();
      
      FormatFName = String.Format("First Name = |{0,-10}|", myFName);
      FormatLName = String.Format("Last Name = |{0,-10}|", myLName);
      FormatPrice = String.Format("Price = |{0,-10:C}|", myInt);
      Console.WriteLine(FormatFName);
      Console.WriteLine(FormatLName);
      Console.WriteLine(FormatPrice);
      // The example displays the following output on a system whose current
      // culture is en-US:
      //          First Name = |      Fred|
      //          Last Name = |     Opals|
      //          Price = |   $100.00|
      //
      //          First Name = |Fred      |
      //          Last Name = |Opals     |
      //          Price = |$100.00   |

 

请参阅
 
 
 

WriteLine
String.Format
格式化类型
标准数字格式字符串
自定义数字格式字符串
标准日期和时间格式字符串
自定义日期和时间格式字符串
标准 TimeSpan 格式字符串
自定义的 TimeSpan 格式字符串
枚举格式字符串

转载于:https://www.cnblogs.com/cjm123/p/8383741.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/anmei1912/article/details/101614639

智能推荐

c python函数图像_python画正余弦函数图像?_leesanghoy的博客-程序员ITS301

展开全部用62616964757a686964616fe58685e5aeb931333433663031python怎样画出如题所示的正余弦函数图像? 如此编写代码,使其中两个轴、图例、刻度,大小,LaTex公式等要素与原图一致,需要用到的代码如下,没有缩进:#-*-codeing:utf-8;-*-from matplotlib import pyplot as pltimport numpy...

数字图像处理之直方图均衡化--直方图、累积分布图_spark-aixin的博客-程序员ITS301_直方图均衡化 累积分布函数

"""3、直方图均衡化--直方图、累积分布图"""img3 = Image.open("car.jpeg") #print(type(img3)) #&lt;class 'PIL.JpegImagePlugin.JpegImageFile'&gt;img3 = np.array(img3) #&lt;class 'numpy.ndarray'&gt; #print(type(...

关于from selenium import name 的报错,及火狐浏览器打不开_test-runing的博客-程序员ITS301

      1.之前不知道怎么回事,把__init__.py 文件写错了,导致一直报from  selenium  import  name的错误,。网上找了很多方法,找不到解决的方案,最后看报错信息,找到储存__init__.py文件的文件 from selenium import webdriver 给删掉,重新保存,。然后在次运行,就可以了2.      要用selenium打开fief...

Windows 2008 R2配置IIS环境搭建网站(二)_旷野亮光的博客-程序员ITS301

目录一台服务器建立多个网站1、利用TCP连接的端口号建立多个网站2、利用网卡绑定多个IP地址建立多个网站3、利用虚拟主机建立多个网站实现网站的安全 1、添加Web服务器安全角色2、设置网站的身份验证方式3、IP地址和域限制IIS管理器进行远程管理一台服务器建立多个网站1、利用TCP连接的端口号建立多个网站如果要在一台服务器主机上架设多个网站,我们可以...

iOS设计模式——委托(delegate)_老A四十二号的博客-程序员ITS301

委托(delegate)也叫代理是iOS开发中常用的设计模式。我们借助于protocol(参考博文:objective-c协议(protocol))可以很方便的实现这种设计模式。什么是代理?苹果的官方文档给了很清晰的解释:Delegation is a simple and powerful pattern in which one object in a program acts o

微软一站式示例代码库在MSDN代码库的新家_onecode的博客-程序员ITS301

微软一站式示例代码库 (Microsoft All-In-One Code Framework)即日起正式迁移至MSDN代码库,新的平台会帮您更轻松地解决开发难题、节省更多时间、获得更友好的用户体验(原CodePlex上一站式示例代码库的portal目前仍然存在,我们会同步更新两个portal上的示例代码) 新家特点即搜即得,一目了然强大的搜索功能,方便您快速获得所需的示例代码。让您能够通过选择不同的平台、Visual Studio产品版本、编程语言、关键主题、或关键技术在便捷地搜索到您需要的示例代码。丰富

随便推点

java中final关键字_我只爱吃肉呀的博客-程序员ITS301

finalfinal是java语言中的一个关键字final表示最终的,不可变的。final可以修饰变量以及方法,还有类等。final修饰的类(无法被继承)final class A{ //A 是没有子孙的}class B extends A{ //错误的, 无法从最终类A进行继承 //B类继承A类 相当于对A类功能进行扩展 //如果不希望别人对A类进行扩展,可以给A类加final关键字,如String类}final修饰的方法(无法被覆盖,重

.net 导出excel_如何将Execl图表导出为高清图片_weixin_39531834的博客-程序员ITS301

不少同学使用Excel绘制图表后,以截图的方式生成图片粘贴到文章中,这种图片往往都不怎么清晰,那么,如何导出高清的图表图片呢?以下提供两个主要的思路和方法。一、先导出矢量图,后用AI导出位图(1)导出矢量图两种Excel图表导出矢量图的方法:将图表复制到一个空工作表中,文件→另存为→PDF(*.pdf)。(或者用虚拟打印机打印为PDF)复制Excel图表→打开一个空PPT→开始→粘贴→选...

(转载)深入探索透视投影变换_weixin_30896825的博客-程序员ITS301

转载来的文章:http://www.ategpu.com/2009/10/06/%E6%B7%B1%E5%85%A5%E6%8E%A2%E7%B4%A2%E9%80%8F%E8%A7%86%E6%8A%95%E5%BD%B1%E5%8F%98%E6%8D%A2.html好文章,记得刚开始接触ogl时,阅读过此文,当时看的云里雾里。现在看来,不禁要称赞作者,能写的如此详细。感谢作者的好文!深...

基于MIMO的无线携能通信系统优化问题的基础知识和研究方向_你长尾巴了的博客-程序员ITS301

基于MIMO的无线携能通信系统优化问题的基础知识和研究方向记录一下自己的学习历程!希望懂的大佬教我做人!系统模型首先考虑这个通用的多用户多中继网络系统模型,随后再细化成不同的具体网络。关于MIMO系统的基本原理技术等等在这里不做说明。假设有N个源信号节点S,通过K个中继节点向N个目的节点发送信息。并假设源节点,中继节点和目的节点均有多根天线。**(1)**当我们把目的节点看成一个整体或者...

怎么从安卓设备转移数据到苹果_安卓换苹果如何转移数据?_杂志社社内刘编辑的博客-程序员ITS301

展开全部可以用网盘工具来操作下。比方说用百度网盘,找到里面的“手机备份32313133353236313431303231363533e58685e5aeb931333431373266”功能,然后将数据都备份好。后面再到苹果手机上,安装一个百度网盘,然后将数据再保存到手机上就行了。手机上的数据要是不小心删除了,那可以通过强力恢复精灵找回(iPhone专用)。二、苹果手机数据转移到新iPhone1...

python实现端口转发_Python实现网络端口转发和重定向的方法_weixin_39945871的博客-程序员ITS301

本文实例讲述了Python实现网络端口转发和重定向的方法。分享给大家供大家参考,具体如下:【任务】需要将某个网络端口转发到另一个主机(forwarding),但可能会是不同的端口(redirecting)。【解决方案】两个使用threading和socket模块的类就能完成我们需要的端口转发和重定向。#encoding=utf8#author: walker摘自《Python Cookbook(2...

推荐文章

热门文章

相关标签