C#属性类型转化

C#利用反射将实体类List<T>转化为Datatable 背景介绍 C#中实体类的操作十分简便,一般情况下不需要涉及ADO.NET,如果需要将实体类转化为Datatable,这个时候就需要手动写一个方法了,代码如下图所示: public static class IEnumerableExtention { /// <summary> /// 将实体类转化为Datatable ... 阅读详情

数据类型

1.1数据类型作用

规范了对于不同的数据所采用的的存储方式,存储空间等信息不同,计算机存储不同数据其读取速度也有区别

1.2数据类型分类

1.2.1值类型

  1. 什么是值类型:在计算机内存中声明一个值类型变量,则直接在其变量名所指向的位置内存栈空间中存储其值

  2. 在调用时,直接通过变量名找到内存栈的位置即可获取到存储的数据结果

  3. 值类型直接存储其值,可以直接改变其值

  4. 调用速度快,但是存储空间小

  5. 内存栈:先进后出

  6. 15种数据类型除过string和object全部都是值类型、结构、枚举...

1.2.2引用类型

  1. 什么是引用类型:在计算机内存中声明一个引用类型变量,则在内存堆中开辟一个空间存储其数据,同时在内存栈中开辟一个空间存储堆数据空间位置的坐标指针

  2. 在调用时,直接通过变量名先找到内存栈中的数据,这个数据是一个内存堆的位置指针数据,然后计算机再根据这个指针数据在内存堆中获取存储的数据结果

  3. 引用类型栈中存储其地址,堆中存储其数据,所以引用类型声明之后则值无法改变,改变方式是重新在堆中开辟一个新的内存空间存储值,然后栈中的存储新的空间地址

  4. 调用速度慢,但是存储空间大

  5. string、object、类、接口...

数据类型转换

2.1数据类型转换的必要性

  1. 在不同的场合下需要使用同一种数据的不同类型

  2. 属性赋值的必要

  3. 两个数据之间要进行一定的处理,此时务必保证两个数据类型一致

2.2警告

 

 

报错是指,程序在未执行之前,通过IDE初步编译发现其语法有明显的错误,这时会对代码使用红色波浪线做出错误提示

警告是指,程序在未执行之前的初步编译过程中并未发现语法有明显错误,只是预测这个代码在执行过程中有可能会出错,提出的一个绿色波浪线警告标志

目前的警告是告诉我们比较运算符"=="左右两边的数据类型应该要保持一致才能更好的比较

2.3数据类型转换方式

隐式转换

计算机自己能够根据目前情况下所需的数据类型将数据直接转成目标类

       object o = "asd";

显示转换(强制转换)

计算机自己无法完成将数据转成目标类型,需要使用一些强制手段处理数据转成目标类型

             

 

    string str = (123).ToString();

2.4显示转换方式

  1. ToString方法:C#中的所有对象都有一个基础方法ToString,这个方法的作用是将之前的数据直接转为string类型

Parse方法:所有的数字类型都有一个Parse方法,这个方法的作用是将纯数字字符串转成对应的数字类型

 int num1 =int.Parse(textBox1.Text);

但是Parse方法需要注意:要转换的字符串必须是纯数字类型字符串否则转换会报错

                 

           

 

 

Convert对象:这个对象有一系列方法,作用是将任意数据类型转换为方法所指定的数据类型

 bool b = Convert.ToBoolean("true");

但是这种转换也有可能失败!

       

 

数据之前括号指定数据类型

(char)r.Next(97, 123)

将随机出来的十进制整数转成其对应的ASCII码字符

  1. as:as关键字将之前的数据类型转换为as之后指定的数据类型

2.5数据类型转换实质

  1. 装箱

    将值类型转换成引用类型这个过程

  2. 拆箱

    将引用类型转换成值类型的这个过程,前提是先装箱

ASCII码

3.1什么是ASCII码

ASCII码是一种字符集,这种字符集是通过使用数字对计算机键盘上的每个字符做一个代表

3.2ASCII码表

 

运算符

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。

4.1数学运算符

4.1.1分类

下表显示了C#支持的所有算术运算符。假设变量A的值为10,变量B的值为 20;

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

4.1.2特殊情况

符号两边的数据类型都是数字类型数据则起到数学相加作用

     int A = 20;
        int B = 30;
        textBox1.Text = (A + B).ToString();

符号两边数据其中一个是字符串类型则起到字符串连接作用

  string str = "你好";
        bool b = false;
        textBox2.Text = str + b

                                              

 

"/"运算符

如果符号两边的数据类型都是整数类型,则这个符号是取整符号

 int i = 3;
        int j = 2;
        textBox1.Text = (i / j).ToString();

如果符号两边至少有一个类型是浮点型,则这个符号是除号

 int h = 3;
        double k = 2;
        textBox2.Text = (h / k).ToString();

4.1.3自加自减

假设变量A的值为10

 描述结果
B=A++后置自加,先使用再自加B=10;A=11
B=++A前置自加,先自加再使用B=11;A=11
B=A--后置自减,先使用再自减B=10;A=9
B=--A前置自减,先自减再使用B=9;A=9
   int A = 10;
        int B;
        B = A++;
        textBox1.Text = "B=" + B + ";A=" + A;
        B = ++A;
        textBox2.Text = "B=" + B + ";A=" + A;

 

         

4.2位运算符

位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:

pqp&qp|qp^q
00000
01011
11110
10011

下表列出了C#支持的位运算符。假设变量A的值为60,变量B的值为13,则

运算符描述实例
&如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。(A&B)得到的结果是12
|如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。(A&B)得到的结果是61
^如果存在于其中一个操作数中但不同时存在于两个操作数中, 二进制异或运算符复制一位到结果中。(A ^ B) 将得到 49
~二进制补码运算符是一元运算符,具有"翻转"位效果。(~A ) 将得到 -61
<<二进制左移运算符。左操作数的值向左移动右操作数指定的位数。A << 2 将得到 240
>>二进制右移运算符。左操作数的值向右移动右操作数指定的位数。A >> 2 将得到 15

 

                    

 

4.3逻辑运算符

下表显示了C#支持的所有逻辑运算符。假设变量A为布尔值true,变量B为布尔值false,则:

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

逻辑运算符注意问题

4.3.1&和&&

  1. &和&&都表示逻辑与(and)的运算符,只有当运算符两边的结果都是true整个运算才为true

  2. &&具有短路功能,如果左边表达式结果为false则右边表达式不再进行运算判断。而&则不然,不论左边表达式结果是true还是右边表达式仍然会进行运算判断

  int a = 60;
        int b = 30;
        if ((a++)<60&&(b++)>30)
        {
            textBox3.Text="结果为true";
        }
        textBox1.Text = a.ToString();
        textBox2.Text = b.ToString();
   
  int a = 60;
        int b = 30;
        if ((a++)<60&(b++)>30)
        {
            textBox3.Text="结果为true";
        }
        textBox1.Text = a.ToString();
        textBox2.Text = b.ToString();

                      

4.3.2|和||

  1. |和||都表示逻辑或(or)的运算符,运算符两边的表达式只要有一个是true整个表达式都是true

  2. ||具有短路功能,如果左边的表达式结果为true则右边表达式不再进行运算判断。而|则不然,不论左边表达式结果是true还是,右边表达式都会进行运算判断

C#动态修改对象属性值的方法 在C#中,我们可以使用反射来访问和修改对象的属性。反射是一种强大的机制,可以在运行时动态地检查类型信息并操作对象。需要注意的是,使用反射来修改属性值可能会导致一些性能损失,因为反射操作通常比直接访问属性要慢。因此,在实际使用中,应该根据具体需求来权衡使用反射的利弊。在C#中,我们经常需要动态修改对象的属性值。这种需求通常出现在需要根据运行时的条件来更新对象的特定属性时。,用于存储要修改的属性名,以及一个整型变量。在上面的示例中,我们创建了一个名为。最后,我们打印出修改后的属性值。的类,它有一个整型属性。 阅读详情

相关推荐

C#用户定义类型转换详解

C#用户定义类型转换 •用于自定义类和结构能够进行隐式转换和显示转换.例如:将一个自定义类类型转换成整型,浮点型等,反之亦然. C#提供隐式转换和显式转换 •隐式转换:编译器自动执行转换•显式转换:编译器只在使用显式转换运算符时才执行转换声明隐式转换的语法如下.注:所有用户定义转换必须使用public和static修饰符 代码如下:public static implicit operator TargetType(SourceType Identifier){       …      return ObjectOfTargetType;}TargetType:目标类型 参数Identitf

C#专题——特性

一、特性的作用 将额外的数据关联到属性或者其它构造的一种方式 二、如何自定义特性 class TestAttribute:System.Attribute { public TestAttribute (string name) { this.Name = name; } public string Name { get; set; } public static void GetValue(

qq_34059233的博客 438

Python地理空间数据库之geopandas使用详解

地理空间数据分析在许多领域中都有着广泛的应用,包括地理信息系统(GIS)、城市规划、环境科学、地质勘探等。Python GeoPandas是一个强大的库,旨在简化地理空间数据的处理和分析。本文将深入介绍GeoPandas库,包括其基本概念、功能特性、示例代码以及在实际应用中的应用场景。

Rocky006的博客 1万+

C#基础 属性类型、数据类型转换

一, 1,对象是由属性、方法、事件组成的一个映射于现实生活中所需用到的物体 2,声明变量必须使用变量类型进行声明(空格后写变量名,每行已分号结束) 3,C#属性赋值方式: 只有属性跟"=" 4,除了string与object 其余全是值类型 二,C#中属性类型 byte(8位无符号整数) sbyte(8位有符号类型) short(16位有符号类型) ushort(16位无符号类型) int(...

Lvsiwei0719的博客 1028

医疗影像处理实战:如何用Slicer和Mimics将.nii.gz文件转为.ply格式(附避坑指南)

本文详细介绍了利用3D Slicer和Materialise Mimics软件,将医学影像中常见的.nii.gz格式文件转换为通用三维网格.ply格式的完整实战流程。文章重点分享了从数据分割、DICOM序列导出到高质量网格生成的核心步骤与关键参数设置,并提供了针对常见问题的避坑指南,旨在帮助医学影像研究者和工程师高效完成从体数据到三维模型的关键转换。

weixin_28304023的博客 102

SAC安装与相关库文件(.so)的安装

摘要 SAC: Seismic Analysis Code 是用于地震信号处理的一套软件。 本文将介绍SAC的安装,以及安装时遇到的一些问题。主要是一些动态库(lib**.so)找不到的问题。 本文的环境 64位的 Ubuntu 16.04 64位的系统是安装出现问题的主要原因 1. SAC获取与安装 SAC 的安装,只需要解压,然后修改环境变量即可!!!不需要任何编译!!! 1.1. SAC 获取与解压 SAC软件获取地址:http://ds.iris.edu/ds/nodes/dmc/forms/s.

WangCY的博客 4333

C#学习(4)属性改变函数

NotifyProperty 属性变化使用 新建一个类,继承INotifyPropertyChanged接口,注意继承的是一个接口,因此需要声明接口中的变量和函数, public class Class1 : INotifyPropertyChanged { public Class1() { PropertyChanged += change; //委托加入执行函数 } public event Pr

u013930679的博客 1630

基于综合阻抗特征的配电架空线路单相断线故障区段定位研究

本文提出了一种基于综合阻抗特征的配电架空线路单相断线故障区段定位方法。通过分析故障后正序、负序阻抗变化,构造综合阻抗判据实现精准定位。仿真结果表明:该方法能有效识别故障区段,差异度判据显著(故障区段达0.508,非故障区段<0.016);对过渡电阻(1-200Ω)和负荷变化具有强鲁棒性,定位准确率不受影响。相比传统方法,综合阻抗法放大了断线故障特征,解决了弱故障信号检测难题,为配电网安全运行提供了可靠的技术手段。

AI的内部世界的博客 78

自己理解的javascript静态方法和动态实例方法区别

一直对javascript对象的概念不清楚,对象里面的什么静态方法、实例方法就更晕了。今天稍微有空再次看了一下关于javascript对象方面的知识,把自己理解的记录以下,主要是两种方法的区别。方便后面可能能用上。 静态方法和实例方法的声明形式不同 两种方法的声明形式如: function user(a, n){ this.a = a||'年龄'; this.n =

hellochenlu的博客 3533

Python调用CANoe(2)(测试模块配置)

本节内容在Python和CANoe的数据交互(1)的基础认知上,继续探索Python如何加载TestSetup,以及运行tse测试文件

蚂蚁小兵 1万+

YOLOv11 热力图可视化全流程:从模型解释到科研论证,让检测结果“有理可看”

无论是科研中需要严谨的模型解释,还是工业里要高效的缺陷定位,这套方法都能让你在“模型黑箱”与“业务需求”之间架起一座可视化的桥梁。别再让模型决策“无据可依”——现在就动手生成你的第一幅热力图,让 YOLOv11 的每一次检测都“有理可看”,用可视化的力量推动你的 AI 研究与落地走向深入!某团队在论文中通过热力图对比,证明其改进的注意力模块可使模型对小目标的关注区域更精准,实验论证说服力提升 50%;工业质检场景下,热力图帮助工程师快速定位模型漏检缺陷的原因——原来是对某类缺陷的特征关注不足。

m0_71589036的博客 677

C# 使用表达式树复制属性值,转化为指定类型 ExpressionTree CopyProperties

之前使用的是网上的一个表达式树版本,使用时需要显示写出参数及返回值的类型 Tin TOut, 略显麻烦 public static class TransExpV2<TIn, TOut> { private static readonly Func<TIn, TOut> Func = GetFunc(); priv...

weixin_30556161的博客 529

基于 Simulink 的固态变压器(SST)多级协同控制实战教程

《固态变压器多级协同控制仿真指南》摘要: 本教程详细讲解了基于Simulink的固态变压器(SST)三级架构建模与控制方法。核心内容包含:1)搭建级联H桥整流(CHB)、双有源桥(DAB)和逆变器(VSI)的三级主电路;2)提出创新的多级协同控制策略,通过功率前馈实现输入输出级动态匹配;3)给出系统级功率平衡、单元级均压控制的具体实现方案。教程特别强调解决实际工程中的关键问题:代数环处理、软启动设计和刚性系统求解器选择,并提供了硬件在环(HIL)仿真建议。附带的MATLAB代码示例可直接用于实现电容电压均衡

xiaoheshang_123的博客 117

C#开发Unity游戏教程之游戏对象的属性变量

C#开发Unity游戏教程之游戏对象的属性变量 Unity游戏对象的属性——变量 通过对上一章的学习,读者应该了解到了,游戏对象上的属性与脚本中的变量,建立联系的方式就是将脚本赋予游戏对象。上一章仅仅是简单的介绍了脚本中的变量,读者一定只是瘾,如今好了。作者将使用一整章的篇幅介绍变量与属性。 Unity游戏对象的属性 在Unity中。游戏场景中游戏...

aoe41606的博客 273

【花雕学编程】Arduino动手做(249)---ESP32+GC9A01之播放GIF的空战锁定动画

摘要: 本实验基于ESP32开发板,驱动1.28寸圆形IPS彩色TFT显示屏(GC9A01驱动,240×240分辨率),通过SPI接口实现GIF动画播放。利用TFT_eSPI和AnimatedGIF库,成功加载并循环播放预置的科幻风格GIF动画(如HUD界面、X翼战机等)。代码实现了GIF解码、逐帧渲染及动态显示功能,通过串口调试监控运行状态。实验验证了该显示屏在动态图像显示中的流畅性,为嵌入式图形应用提供了实用方案,适用于智能穿戴、交互设备等场景。 关键词: ESP32、GC9A01、圆形TFT、GIF播

雕爷学编程 491

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

为何C#属性名称的首字母要大写

  最近因工作需要参与了一个.Net小 项目,语言使用C#,虽然这语言很多地方来源于Java,然而搞Java久了来搞C#还真有一点不习惯,其中一个最不习惯的是C#中的属性首字母大小。比如:public class Topic ...{ private Long id; private String title;  private String content; private String

蔡世友-重出江湖 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C# Expression 树转化为SQL与语句(二)--解决参数问题

C# Expression 树转化为SQL与语句(二)--解决参数问题 在用Expression解析的的时候碰到一些参数(不是具体的值),会出现这种情况。   在这里我们希望得到的是id=10,而不是id=m_id;那如何来解析这些参数? ====================================================================================================\   首先参数分为2中,一种是n.id,这种可以说是一种形

cxu123321的博客 819

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C++与C#的基本类型对照

在移植 c++ dll到 c#时需要进行类型转换特此记录,方便查阅。2022年11月27日。

anlog的专栏 1703

.net 通过对象属性名 修改值

public async Task<IActionResult> AddUserInfo([FromBody]vUpdateModel infoModel) { SysUser user = new SysUser(); var props = user.GetType().Get...

u010595179的博客 670

C#如何利用反射构建Sql参数

首先呢,说到这个问题我们要知道泛型的概念,泛型呢你可以把它当成一个参数,就是调用的时候传入这个类型,接着就是获取这个类型里的所有属性及值。 我们先来创建一个方法名GetMySqlParame的方法,当然我这里是以MySql的为例,有一个参数,这个参数是我们不知道类型和属性及值的实体,我们可以用泛型,也可以用object直接传入。 MySql的参数是MySqlParameter数组,所以返回值为My...

云中小生 500

从UML建模语言到C#代码(转贴)

案例描述有个公司想改善他们的信息系统。第一步是分析职工的培训程序,将一些任务自动化。 当一个职工向培训官申请培训的时候,一个培训程序就开始了。培训官将决定是否同意这位职工的培训申请。 如果培训官同意了职工的培训申请,培训官将会在目前可以负责的培训项目里寻找合适的培训项目。一旦职工决定了她所要接受的培训项目,培训官将会向教员登记。 如果职工中途停止了培训,它必须在最短...

anmei4946286527的博客 232

Javascript 长整型 转 C# DateTime

(转)   JAVA统计从1970年1月1日起的毫秒的数量表示日期。也就是说,例如,1970年1月2日,是在1月1日 后的86,400,000毫秒。同样的,1969年12月31日是在1970年1月1日前86,400,000毫秒。Java的Date类使用long类 型纪录这些毫秒值.因为long是有符号整数,所以日期可以在1970年1月1日之前,也可以在这之后。Long类型表示的最大正值和...

weixin_30856965的博客 102

Xml的属性

主程序 class Program { static void Main(string[] args) { List skillList = new List(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("xml技能

童话 545

C#字符串和时间的相互转换

C#字符串和时间的相互转换。一、DateTime –> string时间类型转化成字符串类型, 那是相当的简单,直接调用ToString()方法即可。如:DateTime dt = DateTime.Now;string dtStr = dt.ToString();如果想对输出格式化,可以这么写:dt.ToString("yyyy年MM月 dd日"); //2005年11...

weixin_30241919的博客 871

.net 使用ajax向服务端传递From表单自动转化成对象踩坑

使用ajax向前端传值时想把它直接转化成对象, 第一、一定要注意ajax的type是get还是post, 第二、在对应的HTML元素中name一定要和想要转化成的对象字段一一对应,大小写也一定要一致 第三、由于后端使用的是JsonResult所以就不需要进行json数据的序列化和反序列化操作了 前端HTML代码 <form id="registerForm" method="post"&g...

qq_40773319的博客 468

C#中的xml文件读取

利用XmlNodeList配合xml中的SelectNodes方法可以储存多个子节点。得到的XmlNodeList对象进行for循环遍历得到其中的内容。用XmlNode类创建一个对象,用xml对象中的SelectSingleNode方法获取单个元素。得到相应的节点后,使用Attributes["属性名"].Value得到相应数据。6、节点List内存储多个自定义类。2、通过xml文件路径加载。以下面这个xml文件举例。1、创建xml文件对象。

holens01的博客 1629
上一篇: C#简易计算器(加减乘除三角函数运算)
下一篇: 游戏案例C#飞行棋
满山猴子
博客等级 码龄7年 48粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值