C#数据类型(详细)

Sql Server 数据类型与 C# 数据类型对照 Sql Server 数据类型与 C# 数据类型对照已验证类型(Sql Server 2012 & Visual Studio 2013) Sql Server C# 简写 bigint System.Int64 long tinyint System.Byte byte binary(50) System.Byte[] byte[] image 阅读详情
AI摘要

本文详细介绍了C#的数据类型,包括值类型、引用类型和指针类型。阐述了各类数据类型的特点、存储方式、复制行为及方法参数传递的区别。还介绍了类、接口、委托等概念,如类和结构的不同点、接口的特点及委托的用途等,为C#开发提供了全面的知识参考。

数据类型分类: 

  • 值类型(Value types)
  • 引用类型(Reference types)
  • 指针类型(Pointer types)

值类型(Value types)

---变量可以直接分配值。 

值类型直接包含数据。比如 int、char、float,它们分别存储数字、字符、浮点数。当您声明一个 int 类型时,系统分配内存来存储值。

下表列出了 C# 可用的值类型:

如需得到一个类型或一个变量在特定平台上的准确尺寸,可以使用 sizeof 方法。

表达式 sizeof(type) 产生以字节为单位存储对象或类型的存储尺寸。

using System;

namespace DataTypeApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         Console.WriteLine("Size of int: {0}", sizeof(int));
         Console.ReadLine();
      }
   }
}

引用类型(Reference types)

---不包含存储在变量中的实际数据,但它们包含对变量的引用。

换句话说,它们指的是一个内存位置。使用多个变量时,引用类型可以指向一个内存位置。如果内存位置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。内置的 引用类型有:object、dynamic 和 string。

对象(Object)类型

---是 C# 通用类型系统(Common Type System - CTS)中所有数据类型的终极基类。Object 是 System.Object 类的别名。所以对象类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。

⚠但是,在分配值之前,需要先进行类型转换。

object obj;
obj = 100; // 这是装箱

int val = 8;
object obj = val;//整型数据转换为了对象类型(装箱)
int nval = (int)obj;//由值类型转换而来的对象类型再转回值类型(拆箱)

动态(Dynamic)类型

可以存储任何类型的值在动态数据类型变量中。这些变量的类型检查是在运行时发生的。

声明动态类型的语法:

dynamic <variable_name> = value;

dynamic d = 20;

⚠动态类型与对象类型相似:

对象类型变量的类型检查是在编译时发生的

动态类型变量的类型检查是在运行时发生的

字符串(String)类型

允许您给变量分配任何字符串值。它是从对象(Object)类型派生的。

字符串(String)类型的值可以通过两种形式进行分配:引号和 @引号0。

可以使用字符数组来表示字符串,但是,更常见的做法是使用 string 关键字来声明一个字符串变量。string 关键字是 System.String 类的别名。

创建 String 对象

您可以使用以下方法之一来创建 string 对象:

  • 通过给 String 变量指定一个字符串
  • 通过使用 String 类构造函数
  • 通过使用字符串串联运算符( + )
  • 通过检索属性或调用一个返回字符串的方法
  • 通过格式化方法来转换一个值或对象为它的字符串表示形式

String 类有以下两个属性:

1Chars
在当前 String 对象中获取 Char 对象的指定位置。
2Length
在当前的 String 对象中获取字符数。

C# string.Format格式化日期

DateTime dt = new DateTime(2017,4,1,13,16,32,108);
string.Format("{0:y yy yyy yyyy}",dt); //17 17 2017 2017
string.Format("{0:M MM MMM MMMM}", dt);//4  04 四月 四月
string.Format("{0:d dd ddd dddd}", dt);//1  01 周六 星期六
string.Format("{0:t tt}", dt);//下 下午
string.Format("{0:H HH}", dt);//13 13
string.Format("{0:h hh}", dt);//1  01
string.Format("{0:m mm}", dt);//16 16
string.Format("{0:s ss}", dt);//32 32
string.Format("{0:F FF FFF FFFF FFFFF FFFFFF FFFFFFF}", dt);//1 1  108 108  108   108    108
string.Format("{0:f ff fff ffff fffff ffffff fffffff}", dt);//1 10 108 1080 10800 108000 1080000
string.Format("{0:z zz zzz}", dt);//+8 +08 +08:00

string.Format("{0:yyyy/MM/dd HH:mm:ss.fff}",dt);  //2017/04/01 13:16:32.108
string.Format("{0:yyyy/MM/dd dddd}", dt);      //2017/04/01 星期六
string.Format("{0:yyyy/MM/dd dddd tt hh:mm}", dt); //2017/04/01 星期六 下午 01:16
string.Format("{0:yyyyMMdd}", dt);         //20170401
string.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", dt); //2017-04-01 13:16:32.108

ps:除去string.Format()可以对日期进行格式化之外,*.ToString()也可以实现相同的效果: 

DateTime dt = new DateTime(2017,4,1,13,16,32,108);
dt.ToString("y yy yyy yyyy");//17 17 2017 2017
dt.ToString("M MM MMM MMMM");//4  04 四月 四月
dt.ToString("d dd ddd dddd");//1  01 周六 星期六
dt.ToString("t tt");//下 下午
dt.ToString("H HH");//13 13
dt.ToString("h hh");//1  01
dt.ToString("m mm");//16 16
dt.ToString("s ss");//32 32
dt.ToString("F FF FFF FFFF FFFFF FFFFFF FFFFFFF");//1 1  108 108  108   108    108
dt.ToString("f ff fff ffff fffff ffffff fffffff");//1 10 108 1080 10800 108000 1080000
dt.ToString("z zz zzz");//+8 +08 +08:00

dt.ToString("yyyy/MM/dd HH:mm:ss.fff"); //2017/04/01 13:16:32.108
dt.ToString("yyyy/MM/dd dddd");      //2017/04/01 星期六
dt.ToString("yyyy/MM/dd dddd tt hh:mm"); //2017/04/01 星期六 下午 01:16
dt.ToString("yyyyMMdd");         //20170401
dt.ToString("yyyy-MM-dd HH:mm:ss.fff"); //2017-04-01 13:16:32.108

 用户自定义引用类型有:class、interface 或 delegate

类(Class)

当你定义一个类时,你定义了一个数据类型的蓝图。这实际上并没有定义任何的数据,但它定义了类的名称意味着什么,也就是说,类的对象由什么组成及在这个对象上可执行什么操作。对象是类的实例。构成类的方法和变量称为类的成员。 

定义:类的定义是以关键字 class 开始,后跟类的名称。类的主体,包含在一对花括号内。

 下面是类定义的一般形式:

<access specifier> class  class_name 
{
    // member variables
    <access specifier> <data type> variable1;
    <access specifier> <data type> variable2;
    ...
    <access specifier> <data type> variableN;
    // member methods
    <access specifier> <return type> method1(parameter_list) 
    {
        // method body 
    }
    <access specifier> <return type> method2(parameter_list) 
    {
        // method body 
    }
    ...
    <access specifier> <return type> methodN(parameter_list) 
    {
        // method body 
    }
}

注意:

  • 访问标识符 <access specifier> 指定了对类及其成员的访问规则。如果没有指定,则使用默认的访问标识符。类的默认访问标识符是 internal,成员的默认访问标识符是 private。

  • 数据类型 <data type> 指定了变量的类型,返回类型 <return type> 指定了返回的方法返回的数据类型。

  • 如果要访问类的成员,你要使用点(.)运算符。

  • 点运算符链接了对象的名称和成员的名称。

实例:

using System;
namespace BoxApplication
{
    class Box
    {
       public double length;   // 长度
       public double breadth;  // 宽度
       public double height;   // 高度
    }
    class Boxtester
    {
        static void Main(string[] args)
        {
            Box Box1 = new Box();        // 声明 Box1,类型为 Box
            Box Box2 = new Box();        // 声明 Box2,类型为 Box
            double volume = 0.0;         // 体积

            // Box1 详述
            Box1.height = 5.0;
            Box1.length = 6.0;
            Box1.breadth = 7.0;

            // Box2 详述
            Box2.height = 10.0;
            Box2.length = 12.0;
            Box2.breadth = 13.0;
           
            // Box1 的体积
            volume = Box1.height * Box1.length * Box1.breadth;
            Console.WriteLine("Box1 的体积: {0}",  volume);

            // Box2 的体积
            volume = Box2.height * Box2.length * Box2.breadth;
            Console.WriteLine("Box2 的体积: {0}", volume);
            Console.ReadKey();
        }
    }
}
 类和结构有以下几个基本的不同点:

类型:

  • 结构是值类型(Value Type): 结构是值类型,它们在栈上分配内存,而不是在堆上。当将结构实例传递给方法或赋值给另一个变量时,将复制整个结构的内容。
  • 类是引用类型(Reference Type): 类是引用类型,它们在堆上分配内存,栈中保存的只是引用。当将类实例传递给方法或赋值给另一个变量时,实际上是传递引用(内存地址)而不是整个对象的副本。

继承:

  • 结构不能继承: 结构不能继承其他结构或类,也不能作为其他结构或类的基类。
  • 类支持继承: 类支持单继承,一个类可以继承另一个类的成员,并且可以实现多个接口

默认构造函数:

  • 结构不能有无参数的构造函数: 结构不能包含无参数的构造函数。每个结构都必须有至少一个有参数的构造函数。
  • 类可以有无参数的构造函数: 类可以包含无参数的构造函数,如果没有提供构造函数,系统会提供默认的无参数构造函数。

可空性:

  • 结构可以是可空的: 结构可以被声明为可空,即可以赋予 null 值。
  • 类默认可为null: 类的实例默认可以为 null,因为它们是引用类型。

性能和内存分配:

  • 结构通常更轻量: 由于结构是值类型且在栈上分配内存(存储在栈中),栈空间小,访问速度相对更快。它们通常比类更轻量,故而,当我们描述一个轻量级对象的时候,结构可提高效率,成本更低。适用于简单的数据表示。
  • 类可能有更多开销: 由于类是引用类型,可能涉及更多的内存开销和管理。类的对象是存储在堆空间中,堆空间大,但访问速度较慢,假如我们在传值的时候希望传递的是对象的引用地址而不是对象的拷贝,就应该使用类了。另外,当堆栈的空间很有限,且有大量的逻辑对象时,创建类要比创建结构好一些;

1、结构体中声明的字段无法赋予初值,类可以:

结构体定义:是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。
struct 关键字用于创建结构体。结构体是用来代表一个记录

struct Books
{
   public string title;
   public string author;
   public string subject;
   public int book_id;
};  

---------------------实例-----------------
using System;
using System.Text;
     
struct Books
{
   public string title;
   public string author;
   public string subject;
   public int book_id;
};  

public class testStructure
{
   public static void Main(string[] args)
   {

      Books Book1;        /* 声明 Book1,类型为 Books */
      Books Book2;        /* 声明 Book2,类型为 Books */

      /* book 1 详述 */
      Book1.title = "C Programming";
      Book1.author = "Nuha Ali"; 
      Book1.subject = "C Programming Tutorial";
      Book1.book_id = 6495407;

      /* book 2 详述 */
      Book2.title = "Telecom Billing";
      Book2.author = "Zara Ali";
      Book2.subject =  "Telecom Billing Tutorial";
      Book2.book_id = 6495700;

      /* 打印 Book1 信息 */
      Console.WriteLine( "Book 1 title : {0}", Book1.title);
      Console.WriteLine("Book 1 author : {0}", Book1.author);
      Console.WriteLine("Book 1 subject : {0}", Book1.subject);
      Console.WriteLine("Book 1 book_id :{0}", Book1.book_id);

      /* 打印 Book2 信息 */
      Console.WriteLine("Book 2 title : {0}", Book2.title);
      Console.WriteLine("Book 2 author : {0}", Book2.author);
      Console.WriteLine("Book 2 subject : {0}", Book2.subject);
      Console.WriteLine("Book 2 book_id : {0}", Book2.book_id);       

      Console.ReadKey();

   }
}

----------------错误案例--------------------------
struct test001
{
    private int aa = 1;
}

执行以上代码将出现“结构中不能实例属性或字段初始值设定”的报错,而类中无此限制,代码如下:

class test002
{
    private int aa = 1;
}

2、结构体的构造函数中,必须为结构体所有字段赋值,类的构造函数无此限制:

接口(Interface)

定义接口: MyInterface.cs

定义:指定一组函数成员而不实现成员的引用类型,其它类型和接口可以继承接口。

接口使用 interface 关键字声明,它与类的声明类似。接口声明默认是 public 的。下面是一个接口声明的实例:

interface IMyInterface
{
    void MethodToImplement();
}

以上代码定义了接口 IMyInterface。通常接口命令以 I 字母开头,这个接口只有一个方法 MethodToImplement(),没有参数和返回值,当然我们可以按照需求设置参数和返回值。

  接口继承: InterfaceInheritance.cs

以下实例定义了两个接口 IMyInterface 和 IParentInterface。

如果一个接口继承其他接口,那么实现类或结构就需要实现所有接口的成员。

以下实例 IMyInterface 继承了 IParentInterface 接口,因此接口实现类必须实现 MethodToImplement() 和 ParentInterfaceMethod() 方法:

using System;

interface IParentInterface
{
    void ParentInterfaceMethod();
}

interface IMyInterface : IParentInterface
{
    void MethodToImplement();
}

class InterfaceImplementer : IMyInterface
{
    static void Main()
    {
        InterfaceImplementer iImp = new InterfaceImplementer();
        iImp.MethodToImplement();
        iImp.ParentInterfaceMethod();
    }

    public void MethodToImplement()
    {
        Console.WriteLine("MethodToImplement() called.");
    }

    public void ParentInterfaceMethod()
    {
        Console.WriteLine("ParentInterfaceMethod() called.");
    }
}

 接口的特点

  •  (1)通过接口可以实现多重继承,C# 接口的成员不能有 public、protected、internal、private 等修饰符。原因很简单,接口里面的方法都需要由外面接口实现去实现方法体,那么其修饰符必然是 public。C# 接口中的成员默认是 public 的,java 中是可以加 public 的。
  •  (2)接口成员不能有 new、static、abstract、override、virtual 修饰符。有一点要注意,当一个接口实现一个接口,这2个接口中有相同的方法时,可用 new 关键字隐藏父接口中的方法。
  •  (3)接口中只包含成员的签名,接口没有构造函数,所以不能直接使用 new 对接口进行实例化。接口中只能包含方法、属性、事件和索引的组合。接口一旦被实现,实现类必须实现接口中的所有成员,除非实现类本身是抽象类。
  •  (4)C# 是单继承,接口是解决 C# 里面类可以同时继承多个基类的问题。
  •  (5)接口内可以定义属性(有get和set的方法)。如string color { get ; set ; }这种。
  •  (6)实现接口时,必须和接口的格式一致。
  •  (7)必须实现接口的所有方法。

委托(Delegate)

C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。

委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。

委托(Delegate)特别用于实现事件和回调方法

声明委托

委托声明决定了可由该委托引用的方法。委托可指向一个与其具有相同标签的方法。

声明委托的语法如下:

delegate <return type> <delegate-name> <parameter list>
实例化委托(Delegate)

一旦声明了委托类型,委托对象必须使用 new 关键字来创建,且与一个特定的方法有关。当创建委托时,传递到 new 语句的参数就像方法调用一样书写,但是不带有参数。例如:

public delegate void printString(string s);
...
printString ps1 = new printString(WriteToScreen);
printString ps2 = new printString(WriteToFile);
委托的多播(Multicasting of a Delegate)

委托对象可使用 "+" 运算符进行合并。一个合并委托调用它所合并的两个委托。只有相同类型的委托可被合并。"-" 运算符可用于从合并的委托中移除组件委托。

使用委托的这个有用的特点,您可以创建一个委托被调用时要调用的方法的调用列表。这被称为委托的 多播,也叫组播。

委托的用途

委托可用于引用带有一个字符串作为输入的方法,并不返回任何东西。

值类型,引用类型的区别:

存储方式:

  • 值类型:值类型的变量直接存储数据的实际值。它们通常存储在栈(Stack)中,且内存分配和释放是自动完成的。每个值类型的变量都具有自己的内存空间,互相独立。
  • 引用类型:引用类型的变量存储的是对象的引用(内存地址)。对象本身存储在堆(Heap)中,而变量只是引用它们的地址。多个引用类型的变量可以指向同一个对象,它们共享同一块内存空问。

复制行为:

  • 值类型:当一个值类型的变量被赋值给另一个变量,实际上是将该值的副本复制给了新变量。因此,修改一个变量不会影响到其他变量,它们互相独立。(纸张的复印,修改复印件不会影响本件)
  • 引用类型:当一个引用类型的变量被赋值给另一个变量,实际上是将对象的引用复制给了新变量。因此,两个变量引用同一个对象,修改其中一个变量会影响到另一个变量,它们共享同一块内存空间。(同一个云盘资源,使用不同链接分享给不同的人时,大家看到的资源是同一个资源,如果这个资源被修改了,大家看到的都变化了)

方法参数传递:

  • 值类型:当将值类型的变量作为方法的参数进行传递时,实际上是将值的副本传递给了方法。在方法内部对参数的修改不会影响到原始变量。
  • 引用类型:当将引用类型的变量作为方法的参数进行传递时,实际上是将对象的引用传递给了方法。在方法内部对参数引用的对象进行的修改会影响到原始变量。

在实际应用中,选择值类型还是引用类型取决于数据的特性和需求。

值类型适用于较小的简单数据,具有快速的访问和复制特性。

引用类型适用于复杂的对象、大型数据集合和需要共享数据的场景,但需要更多的内存开销和额外的访问层级。

指针类型(Pointer types)

指针是一种特殊的类型,既非值类型又非引用类型。

C#为了类型安全,默认并不支持指针。

但是也并不是说C#不支持指针,我们可以使用unsafe关键词,开启不安全代码(unsafe code)开发模式。在不安全模式下,我们可以直接操作内存,这样就可以使用指针了。

在不安全模式下,CLR并不检测unsafe代码的安全,而是直接执行代码。unsafe代码的安全需要开发人员自行检测。

一般在和硬件交互的时候,C#做图像处理的时候,针对大量的数据处理,这时候我们如果使用指针直接访问内存的话会在效率上提高很多

---变量存储另一种类型的内存地址

声明指针类型的语法:
type* identifier;
char* cptr;
int* iptr;
指针的赋值:

指针保存的就是地址,所以我们给指针赋值就是获取数据的地址,

但是这里要注意一点,如果我们要获取的数据在引用类型内,比如说是数组,由于数组是引用类型,且在内存中可移动(堆上可被垃圾回收),为了能获取可移动数据的地址,我们需要用fixed把它固定下来。

byte[] bytes = new byte[24];
                fixed (byte* pData=&bytes [0])
                {

                }
C#中使用指针的总结

1.引用类型不能定义为指针
2.msdn上说enum可以定义为指针,可是我真不知道它的用处是什么。所以在指针的类型中并没有出现enum类型。
3.c#中的指针操作远远不如c/c++,如果想学习指针的话,还是用c/c++
4.微软并不推荐使用unsafe code模式,也不推荐使用指针。在msdn官方文档中,唯一一句赞美C#指针的话就是“合理的使用指针,可以提高程序的执行速度”。但是什么是“合理的使用”?我下载了msdn上的几个关于C#指针的实例代码,发现用的最多的是调用api函数,在api函数中,有大量的指针参数。
5.fixed的使用可能产生存储碎片,因为它们不能移动。如果确实需要固定对象,固定对象的时间应该越短越好。
6.可以使我们了解非托管类型的内存分配。

c#基础知识 由于readonly所定义的常量相当于类的成员,因此使用const来定义常量所受到的类型限制,在使用readonly去定义的时候全部消失,即可以用readonly去定义任何类型的常量。在程序中使用DLL类库某个类的静态常量时,如果在类库中修改静态常量的值,其它接口没有发生变化,一般来说,程序调用端是不需要重新编译,直接执行就可以调用新的类库。2.用const定义的常量,对于所有类对象而言都是一样的,因此需要像访问静态成员那样去访问const定义的常量,而用对象的成员方式去访问会出变异错误。 阅读详情

相关推荐

值类型和引用类型详解(C#)

值类型和引用类型,是c#比较基础,也必须掌握的知识点,但是也不是那么轻易就能掌握,今天跟着我一起来看看吧。

草原上唱山歌的博客 2168

C#数据类型

C# 语言中内置了一些基本的数据类型,数据类型用来指定程序中变量可以存储的数据的类型。不同编程语言的数据类型都有所不同,下面让我们来了解一下C#的数据类型。

懒羊羊我小弟的博客 8985

深入剖析C#类型体系:概念、分类、特性与代码示例

C#类型体系涵盖了值类型、引用类型、指针类型和可空类型,提供了丰富的数据结构和编程工具。通过类型转换、装箱与拆箱等机制,C#类型体系在保证类型安全的同时,提供了足够的灵活性以适应各种编程场景。在实际编程中,应遵循良好的类型设计原则,合理选择和使用不同类型,以充分发挥C#类型体系的强大功能。C#类型体系是C#语言的基础组成部分,它定义了程序中所有数据的结构、行为和交互规则。C#类型体系的构建旨在提供一种强大、安全且易于使用的类型系统,支持面向对象编程、泛型、接口、枚举、委托等多种编程特性。

java专栏 1079

2021-08-28

C#的基本数据类型 数据类型主要用于指明变量和常量存储值的类型,C#语言是一种强类型语言,要求每个变量都必须指定数据类型。 C#语言的数据类型分为值类型和引用类型。 值类型包括整型、浮点型、字符型、布尔型、枚举型等;引用类型包括类、接口、数组、委托、字符串等。 整型类型 所谓整型就是存储整数的类型,按照存储值的范围不同,C#语言将整型分成了byte类型、int类型、short类型、long类型等,并分别定义了有符号数和无符号数。 整型类型的分类、占用内存大小以及最大可表示范围如下表所示: 类型 取值

weixin_57727836的博客 463

在Docker中集成GPU监控体系

先上效果图 等文档整理出来再更

tamako0v0的博客 2471

手把手教你用组态王KingSCADA 3.53读取S7-1200 PLC数据(保姆级图文教程)

本文提供了一份详细的组态王KingSCADA 3.53读取S7-1200 PLC数据的实战教程,涵盖从硬件连接到软件配置、变量映射到故障排查的全流程。特别针对初学者常见问题提供解决方案,帮助工程师快速实现稳定通信,提升工业自动化系统效率。

weixin_26876073的博客 677

【C#基础】C# 数据类型总结

编程语言 C# 数据类型的介绍 。

好学若饥,谦卑若愚。 6913

别再踩坑了!Vue3 + Vant 手把手教你搞定飞书网页应用免登(SSO),附完整代码和重定向URL配置

本文详细介绍了如何使用Vue3和Vant实现飞书H5应用的免登(SSO)功能,包括飞书后台配置的关键细节、Vue3前端实现的最佳实践以及常见问题排查指南。特别针对重定向URL配置、安全设置和错误处理等常见陷阱提供了解决方案,并附有完整代码示例和性能优化建议。

weixin_29323551的博客 407

C# 数据类型

C# 数据类型概述 C# 是一种强类型语言,其数据类型主要分为值类型、引用类型和指针类型。值类型(如 int、float)直接存储数据在栈中,具有明确的数值范围和默认值。引用类型(如 string、object)存储内存地址在堆中,支持动态类型检查。指针类型用于不安全代码,直接操作内存地址,需在 unsafe 块中使用。理解这些类型的特点和适用场景对编写高效、安全的C#代码至关重要。

m0_57545130的博客 1216

使用基于python的neurora进行表征相似性分析(RSA)

发现了一款用于表征分析的Python API,还是挺方便的,这里简单介绍一下进行表征相似性分析的使用方法。

zjh12312311的博客 2766

C#构建高精度预测模型:从数据预处理到模型部署的实战指南

【代码】C#构建高精度预测模型:从数据预处理到模型部署的实战指南。

墨夶的博客 1265

C#基本数据类型

C#基本数据类型 在第一章我们了解了C#的输入、输出语句后,我这一节主要是介绍C#的基础知识,本节的内容也是后续章节的基础,好的开端等于成功的一半。在你阅读完本章后,你就有足够的C#知识编写简单的程序了。但还不能使用继承或其它面向对象的特征。 本章主要针对以下几个部份来进行讲解: 1、电脑是由什么来存储所使用的数据? 2、基本数据类型有哪些? 3、如何声明变量和...

hewusheng10的专栏 3167

Qwen-Image(阿里通义千问)技术浅析(一)

Qwen-Image(阿里通义千问多模态模型)是阿里巴巴推出的视觉-语言多模态大模型,能够理解图像内容并完成复杂的跨模态任务。

m0_75253143的博客 679

C#语言的数据类型

C#的数据类型丰富多样,允许开发者根据需求选择合适的数据结构。理解这些数据类型的特性和用途,有助于编写高效、可维护的代码。借助强类型的优势,C#在类型安全和内存管理方面表现出色,是开发现代应用程序的理想选择。在实际开发中,根据具体的应用场景,选择合适的数据类型至关重要。初学者往往对数据类型的理解不够深入,建议在实践中不断总结与反思。理解C#的各种数据类型,能够帮助开发者更高效地编写和维护代码。希望通过本文的介绍,大家能对C#的数据类型有更深入的理解,在实际开发中灵活运用,为后续的编程学习打下坚实的基础。

2501_90216386的博客 1308

芯片原厂linux驱动开发的分享

大家好,我是XX,来自湖南XX学院,电子信息18级,也曾在创新基地控制组学习过两三年,毕业后就职于一家芯片原厂的解决方案部,担任驱动工程师的职位,算上实习期,我的工作时长已有两年。在此我想将这两年期间学习与积累到的一些经验输出出来,与大家一同分享。知识面有限,只能简单介绍一些驱动开发方向的一些经验,且由于经验尚浅,文中难免会有一些疏漏和错误之处,还请大家积极地批评指正。

嵌入式技术开发 849

量化交易python代码解析:从狙击手算法到最优限价算法

在金融市场的竞技场上,量化交易如同一位冷静的策略大师,它以数学模型为剑,以计算机程序为盾,精准出击,捕捉市场的微妙波动。本文将深入探讨五种核心量化交易算法:直接委托算法(DMA)、时间加权平均算法(TWAP)、冰山算法(Iceberg)、狙击手算法(Sniper)、条件委托算法(Stop)以及最优限价算法(BestLimit),揭开它们背后的运作机制与实战应用。

木头大左的博客 1889

C#中的数据类型

对于初学者,数据类型是需要重点理解和消化的,后续学习过程中,数据的保存,逻辑的处理,模型的建立都是离不开这些数据类型。对数据类型有一个整体的认识是很有必要的。

tangyinquan的专栏 840

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C#数据类型查看

C#数据类型查看需要 使用Type类 int num = 1; Type num1 = num.GetType(); Console.WriteLine(num1); 输出:System.Int32 其他数据类型基本同上 也可以直接使用GetType()方法 int num = 1; Console.WriteLine(num.GetType()); string str1 = "你好"; Console.WriteLine(str1.GetType()); bool bool1 = true; Cons

weixin_44022365的博客 4062

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C#中数据类型的分类

数据类型的由来 在我们的日常生活中存在着各种各样的数据,我们可以把每一种数据根据它们的特点进行归类划分成很多种类,从而成为不同的数据类型。比如,整数,小数… C#也一样。只要程序运行就离不开数据的运算,所以每一种数据也一定要有分类。在C#中对于数据类型的分类比较严格,从而C#也可以叫做强类型语言。 数据类型的分类 C#中数据类型总的来说可分为两大类,值类型和引用类型。 值类型包括:整型,浮

1万+

c#数据类型

数据类型

a_codecat的博客 295

SQL和C#数据类型

开发工具与关键技术: SQL和C#数据类型 作者: 木有窝的鸟~小通 撰写时间:2019年5月23日 数据类型俗称数据库的核心所在,在数据库和其他编辑软件都是必不可少的。而我们在开发的过程中,在设置数据的时候,经常会碰到数据类型的选择,都需要正确选择数据类型。不同数据信息存放在数据库中,都要设定不同的数据类型。而数据类型相当于不同大小的容器,可以装载很多数据。 数据类型却有能分很多种,现在所学的一...

weixin_44548473的博客 797
上一篇: C#简单概念
下一篇: C# 封装(详细)
Seike_113
博客等级 码龄5年 270粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值