【C#】.Net基础语法一

news2024/12/27 13:13:42

目录

一、程序集信息

【1.1】Properties中AssemblyInfo文件

二、.Net程序的两次编译过程

三、.Net中命名空间和类

【3.1】引入命名空间

【3.2】修改默认的命名空间

【3.3】命名空间的总结

四、.Net中数据类型

【4.1】数值型

【4.2】非数值型

五、.Net中变量

【5.1】变量命名规范

【5.2】类、属性、方法命名规范

六、控制台输入输出

【6.1】基本输入输出

【6.2】字符串格式化方法

七、运算符

【7.1】算数运算符

【7.2】关系运算符

【7.3】逻辑运算符

【7.4】位运算符

【7.5】赋值运算符

【7.6】其他运算符

八、数据类型转换

【8.1】自动类型转换

【8.2】强制类型转换

【8.3】字符串与值类型转换

【8.4】万能转换器

九、程序逻辑语句

【9.1】判断语句

【9.2】循环语句


.Net基础语法一

一、程序集信息

主要是用来保存项目的说明信息和相关的版权信息。

【1.1】Properties中AssemblyInfo文件

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
​
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("FirstApp.Console")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Home")]
[assembly: AssemblyProduct("FirstApp.Console")]
[assembly: AssemblyCopyright("Copyright © Home 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
​
// 将 ComVisible 设置为 false 会使此程序集中的类型
// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
// 请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
​
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("4494d8d4-3fe6-4e42-9b63-f5fc7744f966")]
​
// 程序集的版本信息由下列四个值组成: 
//
//      主版本
//      次版本
//      生成号
//      修订号
//
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
// 通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

程序集信息的修改方法一:同过上面代码对应下面的图进行修改:

程序集信息的修改方法二:

二、.Net程序的两次编译过程

三、.Net中命名空间和类

类的概念:在面向对象编程语言中,类是程序的基本单元,用类可以封装要处理的数据(属性、字段)和具体的处理过程(放法)。

一个程序的组成结构:

// 引用的命名空间。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
​
/// <summary>
/// 命名空间
/// <summary>
namespace App.ConsoleApp
{
    /// <summary>
    /// 类
    /// </summary>
    internal class Program 
    {
        /// <summary>
        /// 项目入口函数
        /// </summary>
        /// <param name="args"> 启动参数 </param>
        static void Main(string[] args)
        {
            #region Test Code
​
            Console.WriteLine("Hollo World!");
            Console.ReadKey();
​
            #endregion
        }
    }
}

【3.1】引入命名空间

// 引入命名空间的语法:
using FirstApp.Console;
​
// 用完全限定名的语法:<项目名> + <类名>
FirstApp.Console.TestClass testClass = new FirstApp.Console.TestClass();  

【3.2】修改默认的命名空间

【3.3】命名空间的总结

  • 必须要由:任何一个类都要属于一个命名空间。

  • 用于管理:通过命名空间更好的对 “类” 进行分类管理。

  • 自己规划:一个项目可以根据实际的需要,开发者自己划分若干命名空间。

  • 默认名称:默认命名空间和项目名称相同。

  • 使用方法:用 “.” 来分割,但是不表示包含关系(理解成层次关系)。

  • 特别注意:不能以数字、特殊字符开头,也不建议使用中文。

注意:引入命名空间时,如果两个类所在的命名空间不同,其中一个类使用另一个类,则要引入命名空间(使用using)活这 “限定名”。

注意:引入命名空间时,如果两个类所在类库不同,先引入类库,在引入命名空间。

四、.Net中数据类型

【4.1】数值型

类型描述范围默认值
bool布尔值True 或 FalseFalse
byte8 位无符号整数0 到 2550
char16 位 Unicode 字符U +0000 到 U +ffff'\0'
decimal128 位精确的十进制值,28-29 有效位数(-7.9 x 1028 到 7.9 x 1028) / 100 到 280.0M
double64 位双精度浮点型(+/-)5.0 x 10-324 到 (+/-)1.7 x 103080.0D
float32 位单精度浮点型-3.4 x 1038 到 + 3.4 x 10380.0F
int32 位有符号整数类型-2,147,483,648 到 2,147,483,6470
long64 位有符号整数类型-9,223,372,036,854,775,808 到 9,223,372,036,854,775,8070L
sbyte8 位有符号整数类型-128 到 1270
short16 位有符号整数类型-32,768 到 32,7670
uint32 位无符号整数类型0 到 4,294,967,2950
ulong64 位无符号整数类型0 到 18,446,744,073,709,551,6150
ushort16 位无符号整数类型0 到 65,5350

【4.2】非数值型

字符串类型、时间类型、引用类型、动态类型、对象类型.....这些数据类型后面需要慢慢接触哦....

五、.Net中变量

概念:表示一个数据存储空间,地址的别名,内存地址是一串16进制数,非常不好记忆,通过变量可以快速找到数据。

变量的三要素:数据存储的类型、有意义好记忆、具体存储的数据。

变量使用方法:定义(声明)规定变量的数据类型和名称,赋具体的值,读取数据。

【5.1】变量命名规范

  • 组成:英文字母(A-Z, a-z)、数组(0-9)、下划线(_),除此之外不能含有其他字符。

  • 开头:只能以字符或下划线开头。

  • 禁用:C#关键字(int、this、class)....特别注意:“$” 符号在C#中是不可以使用的。

  • 名称:要有意义,尽量用英文名称,除了循环变量外,尽量不要用单个字符串,如a、b等。

  • 区别:严格区分大小写Equipld和equipld是完全不同的变量。

  • 原则:使用Camel命名法,首字母小写,比如equipldName、equild等(这里特指成员变量和局部变量)。

【5.2】类、属性、方法命名规范

  • 原则:使用Pascal命名法,首字母大写。

  • 举例:EquipData(类名)、Equipld(属性)、GetData()(方法)。

六、控制台输入输出

【6.1】基本输入输出

方法解释
Console.Write();将指定的字符串值写入标准输出流(不换行)
Console.WriteLine();将指定的字符串值写入标准输出流(换行)
Console.Read();从标准输入流中读取下一个字符
Console.ReadKey();获取用户按下的下一个字符或功能键
Console.ReadLine();从标准输入流读取下一行字符
static void TestCode()
{
    Console.Write("请输入学员姓名: ");
    string strName = Console.ReadLine();
​
    Console.Write("请输入学员成绩:");
    float strScore = float.Parse(Console.ReadLine());
​
    // 这里float隐式转换成了字符串类型。
    Console.WriteLine("姓名:" + strName + "成绩:" + strScore);
    // 等待输入下一个。
    Console.Read();
}

【6.2】字符串格式化方法

static void TestCode()
{
    Console.Write("请输入学员姓名: ");
    string strName = Console.ReadLine();
​
    Console.Write("请输入学员成绩: ");
    float strScore = float.Parse(Console.ReadLine());
​
    Console.Write("请输入学员班级: ");
    string strClass = Console.ReadLine();
​
    // 普通的拼接方法
    string strMsg1 = "姓名:" + strName + " 成绩:" + strScore + " 班级: " + strClass;
    Console.WriteLine(strMsg1);
​
    // 格式化方法1
    string strMsg2 = string.Format("姓名: {0} 成绩: {1} 班级: {2}", strName, strScore, strClass);
    Console.WriteLine(strMsg2);
​
    // 格式话方法2
    string strMsg3 = $"姓名: {strName} 成绩: {strScore} 班级: {strClass}";
    Console.WriteLine(strMsg3);
​
    Console.Read();
}

七、运算符

【7.1】算数运算符

运算符描述实例
+把两个操作数相加A + B 将得到 30
-从第一个操作数中减去第二个操作数A - B 将得到 -10
*把两个操作数相乘A * B 将得到 200
/分子除以分母B / A 将得到 2
%取模运算符,整除后的余数B % A 将得到 0
++自增运算符,整数值增加 1A++ 将得到 11
--自减运算符,整数值减少 1A-- 将得到 9

【7.2】关系运算符

运算符描述实例
==检查两个操作数的值是否相等,如果相等则条件为真。(A == B) 不为真。
!=检查两个操作数的值是否相等,如果不相等则条件为真。(A != B) 为真。
>检查左操作数的值是否大于右操作数的值,如果是则条件为真。(A > B) 不为真。
<检查左操作数的值是否小于右操作数的值,如果是则条件为真。(A < B) 为真。
>=检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。(A >= B) 不为真。
<=检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。(A <= B) 为真。

【7.3】逻辑运算符

运算符描述实例
&&称为逻辑与运算符。如果两个操作数都非零,则条件为真。(A && B) 为假。
||称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。(A || B) 为真。
!称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。!(A && B) 为真。

【7.4】位运算符

&如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。(A & B) 将得到 12,即为 0000 1100
|如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。(A | B) 将得到 61,即为 0011 1101
^如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。(A ^ B) 将得到 49,即为 0011 0001
~按位取反运算符是一元运算符,具有"翻转"位效果,即0变成1,1变成0,包括符号位。(~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。
<<二进制左移运算符。左操作数的值向左移动右操作数指定的位数。A << 2 将得到 240,即为 1111 0000
>>二进制右移运算符。左操作数的值向右移动右操作数指定的位数。A >> 2 将得到 15,即为 0000 1111

【7.5】赋值运算符

运算符描述实例
=简单的赋值运算符,把右边操作数的值赋给左边操作数C = A + B 将把 A + B 的值赋给 C
+=加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数C += A 相当于 C = C + A
-=减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数C -= A 相当于 C = C - A
*=乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数C *= A 相当于 C = C * A
/=除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数C /= A 相当于 C = C / A
%=求模且赋值运算符,求两个操作数的模赋值给左边操作数C %= A 相当于 C = C % A
<<=左移且赋值运算符C <<= 2 等同于 C = C << 2
>>=右移且赋值运算符C >>= 2 等同于 C = C >> 2
&=按位与且赋值运算符C &= 2 等同于 C = C & 2
^=按位异或且赋值运算符C ^= 2 等同于 C = C ^ 2
|=按位或且赋值运算符C |= 2 等同于 C = C | 2

【7.6】其他运算符

运算符描述实例
sizeof()返回数据类型的大小。sizeof(int),将返回 4.
typeof()返回 class 的类型。typeof(StreamReader);
&返回变量的地址。&a; 将得到变量的实际地址。
*变量的指针。*a; 将指向一个变量。
? :条件表达式如果条件为真 ? 则为 X : 否则为 Y
is判断对象是否为某一类型。If( Ford is Car) // 检查 Ford 是否是 Car 类的一个对象。
as强制转换,即使转换失败也不会抛出异常。Object obj = new StringReader("Hello"); StringReader r = obj as StringReader;

八、数据类型转换

【8.1】自动类型转换

// 举例:其他类型也类似
static void TestCode3()
{
    // 隐式转换(自动类型转换)
    byte b = 10;
    int i = b;                  // 大的类型可以存放小的类型
    // 隐式转换(自动类型转换)
    int intValue = 42;
    long longValue = intValue;  // 大的类型可以存放小的类型
}

【8.2】强制类型转换

// 举例:其他类型也类似
static void TestCode3()
{
    // 强制类型转换
    double value1 = 3.14;
    int value2 = (int)value1; // 这样导致丢失精度
​
    // 强制类型转换
    object value3 = 1314.12D;
    int value4 = (int)(double)value3; // 因为object是一个引用类型,特殊的转换
}

【8.3】字符串与值类型转换

// 举例:其他类型也类似
static void TestCode()
{
    int a = int.Parse("1");     // 将数字的字符串表示形式转换为它的等效 32 位有符号整数。
​
    int c = 0;
    int.TryParse("2", out c);   // 将数字的字符串表示形式转换为它的等效 32 位有符号整数。 
                                // 如果 true 成功转换,则为 s;否则为 false。
​
    int d = 123;
    string str = d.ToString();  // 将此实例的数值转换为其等效的字符串表示形式。
}

【8.4】万能转换器

序号Convert的方法 & 描述
1ToBoolean 如果可能的话,把类型转换为布尔型。
2ToByte 把类型转换为字节类型。
3ToChar 如果可能的话,把类型转换为单个 Unicode 字符类型。
4ToDateTime 把类型(整数或字符串类型)转换为 日期-时间 结构。
5ToDecimal 把浮点型或整数类型转换为十进制类型。
6ToDouble 把类型转换为双精度浮点型。
7ToInt16 把类型转换为 16 位整数类型。
8ToInt32 把类型转换为 32 位整数类型。
9ToInt64 把类型转换为 64 位整数类型。
10ToSbyte 把类型转换为有符号字节类型。
11ToSingle 把类型转换为小浮点数类型。
12ToString 把类型转换为字符串类型。
13ToType 把类型转换为指定类型。
14ToUInt16 把类型转换为 16 位无符号整数类型。
15ToUInt32 把类型转换为 32 位无符号整数类型。
16ToUInt64 把类型转换为 64 位无符号整数类型。
// 举例:其他类型也类似
static void TestCode()
{
    int a = Convert.ToInt32("1234");
    float b = Convert.ToSingle("3.14");
    double c = Convert.ToDouble("3.1415");
    DateTime dt = Convert.ToDateTime("2023-09-12");
    string str = Convert.ToString(dt);
}

九、程序逻辑语句

【9.1】判断语句

语句描述
if 语句一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
if...else 语句一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
嵌套 if 语句您可以在一个 ifelse if 语句内使用另一个 ifelse if 语句。
switch 语句一个 switch 语句允许测试一个变量等于多个值时的情况。
嵌套 switch 语句您可以在一个 switch 语句内使用另一个 switch 语句。

可以用来替代 if...else 语句的三木运算符:

Exp1 ? Exp2 : Exp3;
// ? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。

【9.2】循环语句

循环类型描述
while 循环当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。
for/foreach 循环多次执行一个语句序列,简化管理循环变量的代码。
do...while 循环除了它是在循环主体结尾测试条件外,其他与 while 语句类似。
嵌套循环您可以在 while、for 或 do..while 循环内使用一个或多个循环。

循环控制语句:

控制语句描述
break 语句终止 loopswitch 语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。
continue 语句跳过本轮循环,开始下一轮循环。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1038105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Selenium WebUI 自动化测试框架

框架结构 框架结构 框架基于 PO 模型进行设计&#xff0c;将页面元素与操作进行拆分&#xff0c;减少页面改动时的维护成本&#xff1b;同时使用 xsd 自定义 xml 标签&#xff0c;通过解析 xml 来驱动 selenium 进行执行&#xff0c;减少了一定的语言学习成本。 主要功能 基于…

[架构之路-221]:鸿蒙系统和安卓系统的比较:微内核VS宏内核, 分布式VS单体式

目录 一、鸿蒙系统和安卓系统的系统架构 1.1 鸿蒙系统的分层架构 1.2 安卓系统的分层架构 1.3 鸿蒙系统和安卓系统是操作系统吗&#xff1f; 二、鸿蒙系统和安卓系统的系统架构比较 2.1 它们与Linux操作系统的关系 2.2 架构比较 三、操作系统基础 3.1 微内核架构 3.2…

leetcode刷题 二维数组 八方向

题目描述 输入&#xff1a;board [[0,1,0],[0,0,1],[1,1,1],[0,0,0]] 输出&#xff1a;[[0,0,0],[1,0,1],[0,1,1],[0,1,0]] 题目分析:就是以二维数组某个元素为中心&#xff0c;寻找周围八个方向的元素&#xff0c;按照题目要求修改二维数组元素返回&#xff1b; 拷贝一份二…

FPGA板卡启动以及LED灯带调试

环境配置 软件&#xff1a; MobaXterm&#xff08;free版本即可&#xff09;下载教程参考&#xff1a; MobaXterm&#xff08;终端工具&#xff09;下载&安装&使用教程_蜗牛也不慢......的博客-CSDN博客 Win32 Disklmager 下载教程参考&#xff1a; 不分类工具&am…

Nature Communications | 张阳课题组:端到端深度学习实现高精度RNA结构预测

RNA分子是基因转录的主要执行者&#xff0c;也是细胞运作的隐形功臣。它们在基因表达调控、支架构建以及催化活性等多个生命过程中都扮演着关键角色。虽然RNA如此重要&#xff0c;但由于实验数据的缺乏&#xff0c;准确预测RNA 的三维空间结构仍然是目前计算生物学面临的重大挑…

HDMI之HDCP 2.3

Authentication and Key Exchange Without Stored Km With Stored Km HDCP2Version DDC时序 协议截图 Bit2为1,可知DUT设备支持HDCP 2.2及以上版本 RxStatus DDC时序 协议截图 <

C++ 类、方法的同一声明不同实现的方式

问题提出 头文件&#xff1a;声明CurrentTime类和PrintTime方法。 #ifndef CURRENT_TIME_H #define CURRENT_TIME_H class CurrentTime { public:void PrintTime(); }; #endifmain函数&#xff1a;创建CurrentTime对象&#xff0c;调用PrintTime。 #include "current_t…

UNet网络模型:数据集制作

UNet网络模型&#xff1a;数据集制作 一般语义分割的原始图片和标记图片在以下目录下&#xff1a; SegmentationClass&#xff1a;标记图片。 JPEGImages&#xff1a;原始图片。 数据集往往都是很多的图片等信息&#xff0c;对于数据集类来说&#xff0c;一个类里有所有数据…

腾讯mini项目-【指标监控服务重构-会议记录】2023-07-06

7/6 会议记录 Profile4个步骤 解压kafka消息初始化性能事件&#xff0c;分析事件将数据写入kafkaRun 开始执行各stage handler 上报耗时到otel-collector。。。 // ConsumerDispatchHandler consumer // // param msg *sarama.ConsumerMessage // param consumer *databus.K…

FPGA project : rom_vga_jump

只有vga_pix 模块代码与rom_vga不同&#xff0c;所以只上传了这个模块的代码与仿真代码。 // #define BLACK 0x0000 // 黑色 // #define NAVY 0x000F // 深蓝色 // #define DGREEN 0x03E0 // 深绿色 // #define DCYAN …

Linux系统下安装Mysql

1、执行命令&#xff1a;rpm -qa | grep -i mysql&#xff0c;先查看系统之前是否有安装相关的rpm包&#xff0c;如果有&#xff0c;会显示类似下面的信息&#xff1b; 2、通过命令yum -y remove mysql-*  一次性删除系统上所有相关的rpm包&#xff0c;或者通过命令yum -y …

zemax显微镜设计

光学显微镜&#xff08;Optical Microscope&#xff0c;简写OM&#xff09;是利用光学原理&#xff0c;把人眼所不能分辨的微小物体放大成像&#xff0c;以供人们提取微细结构信息的光学仪器&#xff0c;第一架复式光学显微镜是于1665年由英国物理学家虎克制作。 首先做物镜 入…

(第三百篇BLOG记录)写于象牙终章与从零开始-20230924

启 由于若干原因&#xff08;包括但不限于紧锣密鼓的完成博士毕业的一系列实验和论文撰写、学习各种百花齐放的有意思的领域、完成人生身份的重大转变&#xff09;&#xff0c;导致卡在299篇博客已经很久了&#xff0c;不过算了一下还是在一个较长时间维度上可以基本保持每周一…

数据库——理论基础

目录 1.1 什么是数据库 1.2 数据库管理系统&#xff08;DBMS&#xff09; 1.3 数据库和文件系统的区别 1.4 数据库的发展史 1.5常见的数据库 1.5.1关系型数据库 1.5.2 非关系型数据库 1.6 DBMS支持的数据模型 1.1 什么是数据库 数据&#xff1a;描述事物的符号记录 数…

云计算中的关键技术——虚拟化

在数据中心里面&#xff0c;也有一种类似的开源技术 qemu-kvm&#xff0c;能让你在一台巨大的物理机里面&#xff0c;掏出一台台小的机器。这套软件就能解决上面的问题&#xff1a;一点就能创建&#xff0c;一点就能销毁。你想要多大就有多大&#xff0c;每次创建的系统还都是新…

Windows系统如何临时关闭“Windows安全中心实时保护”

前言 启动windows depender实时保护可能会使系统不太流畅&#xff0c;也可能会导致我们的程序无法正常运行&#xff0c;因为它会拦截或搜索我们的正常工作。 暂时关闭windows depender的实时保护对许多用户来说非常重要。 一、Win10系统关闭方法 打开Windows安全中心&#…

Spring面试题20:Spring怎样开启注解装配?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring怎样开启注解装配? 要在Spring中开启注解装配,需要进行以下几个步骤: 添加必要的依赖:在项目的构建工具(如Maven或Gradle)配置文件中…

【从0学习Solidity】34. ERC721

【从0学习Solidity】34. ERC721 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#xff0c;探索全栈开…

详解MySQL存储引擎

前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。 😇😇😇有兴趣的话关注博主一起学习,一起进步吧! 一、MySQL存…

Redis学习笔记-003

Redis企业实战—基于Redis短信验证功能 文章目录 Redis企业实战---基于Redis短信验证功能一、短信登录实现1.1、导入[黑马点评项目](https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA?pwdeh11)1.2、基于Session实现1.3、集群的session的共享问题1.4、基于Redis实现共享sessio…