C# 复习笔记3

C# 复习笔记 消息与事件处理 C# 复习笔记 消息与事件处理学习Windows编程后,有时候需要对系统消息或者事件做出自己的响应或者说自己拦截一些消息,实现某个事件或者函数的触发,这时就需要对系统消息进行处理. 大多数直接开始学习C#没有对C++有太多了解的猿们(包括我在内),都不太了解消息机制,还是看看百度百科的解释吧:百度百科对Windows消息机制的解释 简单的说,我个人理解,Windows是建立在消息机制上的.消息机 阅读详情

面向对象编程:类和对象(二)

  • 以对象为成员
  • 静态成员:描述类的整体特征的量可以用静态变量实现。静态变量在内存中只有一份,为类的所有对象共享。
  • C# 对象初始化
class test:IEquatable<test>
    {
        public int aa { get; set; }
        public string bb { get; set; }
        public bool cc { get; set; }

        public string dd;

        public test(string dd) {
            this.dd = dd;
        }

        public bool Equals(test other)
        {
            return (this.aa == other.aa && this.bb == other.bb && this.cc == other.cc && this.dd == other.dd);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            test a = new test("22") { aa = 1, bb = "11", cc = true, dd = "22" };
            test b = new test("22") { aa = 1, bb = "11", cc = true, dd = "224" };

            Console.WriteLine(a.Equals(b));

            ReadLine();
        }
    }
  • 常量成员
  • Circle.PI
    
  • readonly常量:对于const常量,所有对象都有相同的值,但对于readonly常量,每个对象可以有不同的值。我们把readonly常量初始化代码放在构造函数里,这样每一个对象创建时,就会有独立的值。
  •  public readonly int roomNumber;
    
  • 重载(Overload)
  • this关键字:四种用法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace AppConsole
{
 
    /// <summary>
    /// 普通用户
    /// </summary>
    public class User
    {
        /// <summary>
        /// 全局变量
        /// </summary>
        Dictionary<string, object> dictInfo = null;
 
        /// <summary>
        /// 构造器
        /// </summary>
        public User()
        {
            dictInfo = new Dictionary<string, object>();
        }
 
        /// <summary>
        /// 构造函数重载
        /// </summary>
        /// <param name="UserID"></param>
        /// <param name="UserName"></param>
        public User(int UserID, string UserName)
        {
            this.UserName = UserName;
            this.ID = UserID;
        }
 
        /// <summary>
        /// this,第【1】种用法,索引器
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public object this[string name]
        {
            get { return dictInfo[name]; }
            set { dictInfo[name] = value; }
        }
 
 
        /// <summary>
        /// 编号
        /// </summary>
        public int ID { get; set; }
 
 
        /// <summary>
        /// 用户名
        /// </summary>
        public string UserName { get; set; }
 
        /// <summary>
        /// this第【2】种用法,当做参数传递
        /// </summary>
        public void Said()
        {
            new VIP().Say(this);
        }
 
    }
 
    /// <summary>
    /// 会员
    /// </summary>
    public class VIP : User
    {
 
 
        /// <summary>
        /// 积分
        /// </summary>
        public int integral { get; set; }
 
        /// <summary>
        /// 构造函数
        /// </summary>
        public VIP()
        {
            ID = 520;
            integral = 1000;
        }
 
        /// <summary>
        /// this第【3】种用法,通过this()调用无参构造函数
        /// </summary>
        /// <param name="UserName"></param>
        public VIP(string UserName)
            : this()
        {
            this.UserName = UserName;
        }
 
        /// <summary>
        /// 构造函数重载
        /// </summary>
        /// <param name="UserID"></param>
        /// <param name="UserName"></param>
        public VIP(int UserID, string UserName)
            : base(UserID, UserName)
        {
 
        }
 
        /// <summary>
        ///Say方法
        /// </summary>
        /// <param name="user"></param>
        public void Say([LCQAttribute] User user)
        {
            Console.WriteLine(string.Format("嗨,大家好!我的编号是{0},大家可以叫我{1}!", user.ID, user.UserName));
        }
 
    }
 
    /// <summary>
    /// 静态类,来扩展User类
    /// </summary>
    public static class Helper
    {
 
        /// <summary>
        /// 第【4】种用法: this扩展User类
        /// </summary>
        /// <param name="user"></param>
        public static void Sing(this User user)
        {
            Console.WriteLine(string.Format("嗨,大家好!我的编号是{0},大家可以叫我{1}!", user.ID, user.UserName));
        }
    }
 
    /// <summary>
    /// 特性类:指定特性仅适用于方法和方法的参数
    /// </summary>
    [System.AttributeUsage(AttributeTargets.Method | AttributeTargets.Parameter)]
    public class LCQAttribute : System.Attribute
    {
 
    }
}
  • 索引:索引可以让我们像数组那样访问类的数据成员。
  • 引用符

以对象为元素的数组

  • 声明以对象为元素的数组的方式和普通数组相同
  •  Cat[] cats = new Cat[5];
    
  • 但是这只是声明了一组“引用符”而已,并没有真正创建对象,下面的语句才具体创建对象,并让每个引用符指向一个对象。
for (int i = 0; i < cats.Length; i++)
{
	cat[i] = new Cat();
}

面向对象编程:继承

  • 继承(Inheritance)是软件重用的一种形式,采用这种形式,可以在现有类的基础上添加新的功能,从而创造出新的类。软件重用鼓励人们重用久经考验和调试的高质量软件,不但节省开发时间,而且提高软件质量。
  • protected成员:使得类的成员既保持封装性又可以在派生类中使用,那么可以把它定义为protected成员。
  • 虚方法的重写:在基类中,用关键字virtual声明虚方法;在派生类中,用关键字override重写基类的虚方法
  • 普通方法的隐藏:要想在派生类中修改基类的普通方法,需要用new关键字隐藏基类中的方法。
  • base关键字:如何在派生类中调用被重写或隐藏的基类方法呢?我们知道,每个对象都可以用this关键字引用自身的成员,同样,也可以用base关键字引用基类的成员。
  • 抽象类和抽象方法:
  • 密封类和密封方法:不能诶继承的类,sealed关键字声明
  • 派生类的构造函数

面向对象编程:多态性

  • 接口:接口用关键字interface定义,接口的名称习惯上以字母I开头。一般情况下,接口中只能包含成员的声明,不能有任何实现代码。接口的成员总是公有的,不需要也不能添加public修饰符,也不能声明为虚方法或静态方法。
C#学习笔记之 TabControl控件 写在前边的话:C#学习系列博客是本人在学习C#过程中的读书笔记,目的是方便以后查看复习。由于本人才疏学浅,在学习过程中,难免有所遗漏和错误,欢迎大牛们指正。              TabControl控件即标签也控件,当需要在一个窗体内放置几组相对独立而又数量较多的控件时,可以使用 TabControl控件,该控件有若干个选项卡,每个选项卡关联着一个页面 阅读详情

相关推荐

物联网技术(AIR780E cat1-4G模块+小程序+腾讯云MQTT)驱动的智能井盖系统设计(连载01)

终端设备采用AIR780E模块作为主控器,电子模块有三轴加速度传感器、可燃气体传感器,AIR780E模块(4G模块)通过MQTT通信协议进行数据打包上传至EMQX服务器,在EMQX服务器中,用户可以自行订阅主题和发布主题,小程序通过MQTT通信协议订阅EMQX服务器的主题,服务器通过接收到硬件发布的数据,转发到微信小程序。

leida_3669的博客 2216

【C#基础】get和set

在定义一个类时,需要定义类的属性。属性经常与字段连用,这里先说一下字段与属性的联系与区别。 一、字段与属性 1、关于字段: 字段即使指类中的成员变量,一般在类的内部作数据交互使用,其修饰符一般为private。 字段的命名方法:首单词首字母小写,之后的单词首字母大写 2.关于属性 属性在面向对象,外界访问私有字段的入口。属性本身不保存任何数据,对属性的操作实际上是对属性所对应的字段进行操作。 属性的命名方法:所有单词的首字母大写。 例如:以下对Book属性的定义中,id 和 name都是字段,用

weixin_44023930的博客 2万+

开源处理器Rocket的分支预测机制研究与性能评估(二)

Rocket是基于RISC-V指令集架构的开源处理器,具有分支预测功能,其实现了GShare分支预测机制,在分析Rocket处理器分支预测处理过程、分支预测实现原理的基础上,利用模拟器进行了性能测试,并依据测试结果,对Rocket处理器分支预测参数配置给出建议。

leishangwen的专栏 5690

Model层的两种写法

Model层的两种写法           第一种写法 namespace MyMVC.Models { public class Child { //属性 private int id; public int Id { get { return id; } set {

天高任鸟飞 6035

STM32实战:用定时器触发ADC+DMA双缓冲实现电机电流采样(附避坑指南)

本文详细介绍了如何利用STM32的定时器触发ADC注入组采样,结合DMA双缓冲机制实现电机电流的高效采样。通过PWM触发和双缓冲架构,解决了开关噪声干扰、实时性要求和数据一致性等核心挑战,显著降低CPU负载并提升采样精度。附有完整的代码示例和避坑指南,适用于无人机电调、工业伺服驱动器等高精度电机控制场景。

weixin_33737134的博客 518

STM32F103C8T6实战:从零搭建三相SPWM逆变器(附MATLAB仿真、PCB、源码)

本文详细介绍了如何使用STM32F103C8T6单片机从零搭建三相SPWM逆变器,涵盖硬件选型、PCB设计、SPWM算法实现及MATLAB仿真。项目提供完整的工程文件,包括源码、PCB设计和仿真模型,适合电子工程师和学生进行实践学习。通过本教程,读者可以掌握逆变器设计的核心技术和调试方法。

weixin_30458043的博客 451

C#实体类get和set的作用

一,实体类属性访问存在两种写法:      //第一种写法 private int _id; public int Id { set { _id = value; } get { return _id; } } //第二种写法 ...

dcujcivw769565的博客 519

FreeSwitch采用mrcp协议对接科大讯飞asr和tts以及对话系统

FreeSwitch采用mrcp协议对接科大讯飞asr和tts对接过程

shanghaimoon的专栏 8839

C# 类和对象

C# 类和对象

若有博文对您有帮助,欢迎点赞关注,收藏评论。 1455

对比实验系列:Efficientdet环境配置及训练个人数据集

可以通过下方链接下载Efficientdet源码。

Yayisheng的博客 4585

OpenCV入门(一)Python环境的搭建

因为有点Python基础,并且Python是比较好入门的编程语言,所以,机器视觉后面打算在Python这个平台下进行。

小幽余生不加糖 8120

C#笔记/

通常抽象类会被其他类继承,并重写其中的抽象方法或者虚方法。

Swii_xxxin的博客 1087

Fiori Elements 表格之 Tree Tables:从数据建模到交互行为的全链路剖析

SAP Fiori elements的Tree Table组件将分层数据以表格形式展示,支持展开/折叠操作,适用于组织结构、物料清单等多级数据场景。该组件在List Report和Object Page中均可使用,支持懒加载、多选、列冻结等标准表格功能,并与OData V4服务层级注解深度集成。后端需通过RAP或CAP建模提供层级数据,前端通过清单配置切换表类型。需注意在草稿模式下仅显示活动实体,且展开状态在编辑时不保留。性能方面建议采用懒加载策略,避免全量加载树节点。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 159

C#复习笔记(3)

代码:static void Main(string[] args)   {    int guess, number, guesses = 0;    number = new Random((int)DateTime.Now.Ticks).Next( 0, 10 );    do    {     ++guesses;     Console.Write( "Enter a numbe

raekwon_dotnet的专栏 559

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C#复习笔记(3)--C#2:解决C#1的问题(可空值类型)

C#复习笔记(3)--C#2:解决C#1的问题(可空值类型)

dearbaba_11的博客 98

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C#复习笔记(3)--C#2:解决C#1的问题(实现迭代器的捷径)

实现迭代器的捷径 从这个题目上可以看到C#1实现一个迭代器模式的话是多么的痛苦,我自己也写过不下40行的代码来实现一个迭代器,C#中的迭代器模式是通过IEnumerable和他的泛型等价物IEnumerable<T>来表示的。 C#1如何去实现一个迭代器我不想在列出代码,因为C#2中实现迭代器的代码会被编译器重新编译成C#1实现的迭代器,到那个时候再来看吧。 C#2是利用一个关键...

weixin_30794851的博客 183

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C#复习笔记(3)--C#2:解决C#1的问题(进入快速通道的委托)

委托 前言:C#1中就已经有了委托的概念,但是其繁杂的用法并没有引起开发者太多的关注,在C#2中,进行了一些编译器上的优化,可以用匿名方法来创建一个委托。同时,还支持的方法组和委托的转换。顺便的,C#2中增加了委托的协变和逆变。 方法组转换 方法组这个词的含义来自于方法的重载:我们可以定义一堆方法,这堆方法的名称都一样,但是接受的参数不同或者返回类型不同(总之就是签名不同----除了名字),...

weixin_30502965的博客 128

C#复习笔记(4)--C#3:革新写代码的方式(用智能的编译器来防错)

用智能的编译器来防错 本章的主要内容: 自动实现的属性:编写由字段直接支持的简单属性, 不再显得臃肿不堪; 隐式类型的局部变量:根据初始值推断类型,简化局部变量的声明; 对象和集合初始化程序:用一个表达式就能创建和初始化对象; 隐式类型的数组:根据内容推断数组的类型,从而简化数组的创建过程; 匿名类型:允许创建新的临时类型来包含简单的属性; 自动实现的属性 这个特性简单的我...

weixin_30466953的博客 117

C#复习笔记(4)--C#3:革新写代码的方式(Lambda表达式和表达式树)

Lambda表达式和表达式树 先放一张委托转换的进化图 看一看到lambda简化了委托的使用。 lambda可以隐式的转换成委托或者表达式树。转换成委托的话如下面的代码: Func<string, int> getLength = s => s.Length; 转换成表达式树的话是下面的代码: Expression<Func<string...

weixin_30415113的博客 266

C#复习笔记(4)--C#3:革新写代码的方式(查询表达式和LINQ to object(下))

查询表达式和LINQ to object(下) 接下来我们要研究的大部分都会涉及到透明标识符 let子句和透明标识符 let子句不过是引入了一个新的范围变量。他的值是基于其他范围变量的。let 标识符=表达式; 首先展示一个不适用let操作符来使用的按用户名称长度来排序: ... var queryWithoutLet = from user in SampleDat...

weixin_30319097的博客 153

C#复习笔记(4)--C#3:革新写代码的方式(查询表达式和LINQ to object(上))

查询表达式和LINQ to object(上) 本章内容: 流式处理数据和延迟执行序列 标准查询操作符和查询表达式转换 范围变量和透明标识符 投影、过滤和排序 联接和分组 选择要使用的语法 LINQ中的概念介绍 序列 你当然应该对序列这个概念感觉很熟悉: 它通过IEnumerable 和 IEnumerable< T> 接口进行封装,序列就像数据...

weixin_30782331的博客 163

C#期末考试复习笔记

C#复习笔记1. C#语言概述2. 常用标签控件3. 数据类型4. 运算符和表达式5. 数组6.GDI+图形7. 方法8. 窗体和控件 1. C#语言概述 c#语言是面向对象的程序设计语言,后缀名是.cs c#语言没有指针 c#语言完全拥有.NET的自动回收机制 c#语言不能用于硬件驱动程序的开发 .NET是一个用于建立应用程序的平台 源代码是一个用于应用程序的核心,没有源代码则无法编译一个应用程序 工具栏是一些工具按钮的组合 Console.ReadLine()的作用是防止程序运行完后控制台自动关闭 c

My___优快云的博客 3868

C#复习资料

C#期末考试复习题 一、单项选择题(每小题2分,共20分) 1.在类作用域中能够通过直接使用该类的( )成员名进行访问。 A. 私有 B. 公用 C. 保护 D. 任何 答案:D 2.小数类型(decimal)和浮点类型都可以表示小数,正确说法:( ) A. 两者没有任何区别 B. 小数类型比浮点类型取值范围大 C.小数类型比...

weixin_30347009的博客 1824

C#知识点提炼期末复习专用

根据内部消息称:有三类题型: 程序阅读题:2题 简答题:2题 (主要是对概念的考查) 编程题:暂定2-3题 复习要点: .net framework 通用语言开发环境、.NET基础类库、.NET开发语言、visual studio.NET 集成开发环境 c#的特点 1.语法简介 2.彻底的面向对象 3.与Web应用紧密结合 4.强大的安全机制...

a40802092的博客 1579

【C#笔记】个人自用笔记

类定义:含有虚方法的类可以是具体的类(即非抽象类),也可以是抽象类。含有抽象方法的类必须被声明为抽象类。调用方式:虚方法可以直接通过基类对象进行调用(如果基类对象引用的是非重写该方法的子类实例,则调用的是基类中的实现;如果引用的是重写了该方法的子类实例,则调用的是子类中的实现),也可以通过子类对象进行调用(调用的是子类中的实现,如果子类没有重写该方法,则调用基类中的实现)。

weixin_45478456的博客 1901
上一篇: C# 复习笔记2
下一篇: C# 复习笔记4
henhaoji_123
博客等级 码龄10年 260粉丝 283原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值