C# 入门(中)

简介: C# 入门

1.4、开发环境、测试环境、发布环境


image.png


三、高级C#技术


1、类型推断


C#是一种强类型化的语言,每个变量都有固定的类型。从C#3引入了新关键字var,可以代替变量的类型,但是并不是说变量的类型就是var,也不是说变量的类型是可变的,而是说变量的类型采用了隐式化的类型,具体类型依赖编译器来确定。所以var申明的变量,必须同时初始化该变量,否则编译器就无法确认变量的类型.


语句 是否可编译
var name = 1;
var name;


匿名指定数组时,必须满足以下条件之一


1:相同的类型

2:相同的引用类型或空

3:所有元素的类型都可以隐式转换为一个类型


语句 是否可编译
var myArray = new[] { 1, "test", 2 };
var myArray = new[] { 1, null, 2 };
var myArray = new int?[] { 1, null, 2 };


2、匿名类型


匿名类型是简化编程模型的一种方式,C#编译器会根据要存储的数据自动创建类型

如下实体对象Model

public class Student
{
    public string name {get; set;}
}


实例化该Model

Student student = new Student
{
    name = "东方不败";
};


如果使用匿名类型

var student = new 
{
    name = "东方不败";
};


注意:匿名属性是只读的,无法修改其属性的值


image.png

1:匿名类使用var关键字

2:new 后面没有类型名


3、动态查找


前面说到C#是一种强类型化的语言,但是从C#4开始,引入“动态变量”的概念,也就是类型可变的变量。

//定义动态变量
dynamic dynamicParam;

public class Student
    {
        public string say() => "I am a student";
    }
    public class Teacher
    {
        public string say() => "I am a teacher";
    }
    class Start
    {
        static dynamic GetPerson(string type)
        {
            if (type == "0")
            {
                return new Student();
            }
            else
            {
                return new Teacher();
            }
        }
        static void Main(string[] args)
        {
            while (true)
            {
                string line = ReadLine();
                dynamic person = GetPerson(line);
                WriteLine(person.say());
            }
        }
    }


运行结果


image.png


var 与dynamic比较


-- 差异
var 编译器语法糖,编译时自动匹配实际类型
dynamic 编译后实际是一个Object类型


4、高级方法参数


4.1、可选参数值

public static void print(String text, Boolean b)
{
            if (b)
            {
                WriteLine(text);
            }
            else
            {
                WriteLine("default string print");
            }
}


一般调用方式

print("sssss", false);
print("sssss", true);


如果布尔型参数不是必须的,不想传递时,可以如下改造,类似java的重载

public static void print(String text, Boolean b)
{
            if (b)
            {
                WriteLine(text);
            }
            else
            {
                WriteLine("default string print");
            }
}
public static void print(String text) => print(text, false);


还有一种更简单的方式。

public static void print(String text, Boolean b=false)
{
            if (b)
            {
                WriteLine(text);
            }
            else
            {
                WriteLine("default string print");
            }
}

print("sssss", true);
print("sssss");


还有一种就是通过Optional关键字指定可选参数,但是不能指定默认值

public static void print(String text, [Optional] Boolean b)
{
            if (b)
            {
                WriteLine(text);
            }
            else
            {
                WriteLine("default string print");
            }
}


4.2、可选参数的顺序


1:可选参数必须放在参数列表尾部

2:有默认值得参数必须放在没有默认值参数的前面


委托使用的过程


1:定义委托声明

2:定义委托变量

3:委托变量的初始化(实际上就是将函数的引用赋值给委托变量)

4:使用委托


相关文章
|
5月前
|
存储 编译器 数据处理
C#基础入门之数据类型
C#基础入门之数据类型
|
11天前
|
开发框架 .NET API
RESTful API 设计与实现:C# 开发者的一分钟入门
【10月更文挑战第5天】本文从零开始,介绍了如何使用 C# 和 ASP.NET Core 设计并实现一个简单的 RESTful API。首先解释了 RESTful API 的概念及其核心原则,然后详细说明了设计 RESTful API 的关键步骤,包括资源识别、URI 设计、HTTP 方法选择、状态码使用和错误处理。最后,通过一个用户管理 API 的示例,演示了如何创建项目、定义模型、实现控制器及运行测试,帮助读者掌握 RESTful API 的开发技巧。
34 7
|
15天前
|
C#
C#入门
C#入门
24 0
|
14天前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
48 8
|
1月前
|
设计模式 C# 开发者
C#设计模式入门实战教程
C#设计模式入门实战教程
|
1月前
|
安全 数据库连接 API
C#一分钟浅谈:多线程编程入门
在现代软件开发中,多线程编程对于提升程序响应性和执行效率至关重要。本文从基础概念入手,详细探讨了C#中的多线程技术,包括线程创建、管理及常见问题的解决策略,如线程安全、死锁和资源泄露等,并通过具体示例帮助读者理解和应用这些技巧,适合初学者快速掌握C#多线程编程。
69 0
|
1月前
|
开发框架 .NET Java
C#/.NET/.NET Core自学入门指南
C#/.NET/.NET Core自学入门指南
|
2月前
|
图形学 C# 开发者
全面掌握Unity游戏开发核心技术:C#脚本编程从入门到精通——详解生命周期方法、事件处理与面向对象设计,助你打造高效稳定的互动娱乐体验
【8月更文挑战第31天】Unity 是一款强大的游戏开发平台,支持多种编程语言,其中 C# 最为常用。本文介绍 C# 在 Unity 中的应用,涵盖脚本生命周期、常用函数、事件处理及面向对象编程等核心概念。通过具体示例,展示如何编写有效的 C# 脚本,包括 Start、Update 和 LateUpdate 等生命周期方法,以及碰撞检测和类继承等高级技巧,帮助开发者掌握 Unity 脚本编程基础,提升游戏开发效率。
60 0
|
2月前
|
开发者 iOS开发 C#
Uno Platform 入门超详细指南:从零开始教你打造兼容 Web、Windows、iOS 和 Android 的跨平台应用,轻松掌握 XAML 与 C# 开发技巧,快速上手示例代码助你迈出第一步
【8月更文挑战第31天】Uno Platform 是一个基于 Microsoft .NET 的开源框架,支持使用 C# 和 XAML 构建跨平台应用,适用于 Web(WebAssembly)、Windows、Linux、macOS、iOS 和 Android。它允许开发者共享几乎全部的业务逻辑和 UI 代码,同时保持原生性能。选择 Uno Platform 可以统一开发体验,减少代码重复,降低开发成本。安装时需先配置好 Visual Studio 或 Visual Studio for Mac,并通过 NuGet 或官网下载工具包。
124 0
|
2月前
|
机器学习/深度学习 数据挖掘 C#
ONNX Runtime入门示例:在C#中使用ResNet50v2进行图像识别
ONNX Runtime入门示例:在C#中使用ResNet50v2进行图像识别
74 0