C# -(二)最详细基础语法

2023-11-10

C# 基础语法 学习思维导图

在这里插入图片描述

一、类型系统

  • C# 有两种类型:值类型和引用类型。
  • 值类型的变量直接包含数据,而引用类型的变量则存储对数据(称为“对象”)的引用。
  • 对于引用类型,两个变量可以引用同一个对象;对一个变量执行的运算可能会影响另一个变量引用的对象。
  • 值类型,每个变量都有自己的数据副本;因此,对一个变量执行的运算不会影响另一个变量(ref 和 out 参数变量除外)

注意:在 C# 的统一类型系统中,所有类型(预定义类型、用户定义类型、引用类型和值类型)都是直接或间接从 Object 继承的。

在这里插入图片描述

1. 值类型

1.1简单类型

1.1.1 整数类型

整型类型的特征

在这里插入图片描述
在上表中,最左侧列中的每个 C# 类型关键字都是相应 .NET 类型的别名。 它们是可互换的。 例如,以下声明声明了相同类型的变量:

int a = 123;
System.Int32 b = 123;

举个栗子

using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            /**
             * 计算机中的整数分为两类:
             *  (1)不带符号位的整数(unsigned integer,也称为无符号整数),
             *      此类整数一定是正整数;
             *  (2)带符号位的整数(signed integer),
             *      此类整数可以表示正整数,
             *      又可以表示负整数
             */
            sbyte b = -128;// 有符号 8 位整数 范围:-128 到 127
            byte ub = 255; // 无符号的 8 位整数 范围:0 到 255
            //错误赋值 byte errorb = 300;   
            // CS0031: Constant value '300' cannot be converted to a 'byte'

            Console.WriteLine("sbyte="+b); //sbyte=-128
            Console.WriteLine("byte="+ub); //byte=255

            short ss = -32768; // 有符号 16 位整数 范围:-32,768 到 32,767
            ushort us = 65535; // 有符号 16 位整数 范围:0 到 65,535

            Console.WriteLine("short="+ss); //short=-32768
            Console.WriteLine("ushort="+us); //ushort=65535

            int i = -2147483648; // 带符号的 32 位整数 范围:-2,147,483,648 到 2,147,483,647
            uint ui = 4294967295; // 无符号的 32 位整数 范围:0 到 4,294,967,295

            Console.WriteLine("int="+i); //int=-2147483648
            Console.WriteLine("uint="+ui); //uint=4294967295

            long l = -9223372036854775; // 带符号的 64 位整数 范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
            ulong ul = 18446744073709551615; // 带符号的 64 位整数 范围:0 到 18,446,744,073,709,551,615
            
            Console.WriteLine("long="+l); //long=-9223372036854775
            Console.WriteLine("ulong="+ul); //ulong=18446744073709551615

        }
    }
}
1.1.2 字符类型
  • 命名空间:
    System
  • 程序集:
    System.Runtime.dll
public struct Char : IComparable, IComparable<char>, IConvertible, IEquatable<char>
  1. 继承 Object -> ValueType -> Char
  2. 实现 IComparable IComparable IConvertible IEquatable

举个栗子(一些字符方法)

using System;

public class CharStructureSample
{
    public static void Main()
    {
        char chA = 'A';
        char ch1 = '1';
        string str = "test string";

        Console.WriteLine(chA.CompareTo('B'));          //-----------  Output: "-1" (meaning 'A' is 1 less than 'B')
        Console.WriteLine(chA.Equals('A'));             //-----------  Output: "True"
        Console.WriteLine(Char.GetNumericValue(ch1));   //-----------  Output: "1"
        Console.WriteLine(Char.IsControl('\t'));        //-----------  Output: "True"
        Console.WriteLine(Char.IsDigit(ch1));           //-----------  Output: "True"
        Console.WriteLine(Char.IsLetter(','));          //-----------  Output: "False"
        Console.WriteLine(Char.IsLower('u'));           //-----------  Output: "True"
        Console.WriteLine(Char.IsNumber(ch1));          //-----------  Output: "True"
        Console.WriteLine(Char.IsPunctuation('.'));     //-----------  Output: "True"
        Console.WriteLine(Char.IsSeparator(str, 4));    //-----------  Output: "True"
        Console.WriteLine(Char.IsSymbol('+'));          //-----------  Output: "True"
        Console.WriteLine(Char.IsWhiteSpace(str, 4));   //-----------  Output: "True"
        Console.WriteLine(Char.Parse("S"));             //-----------  Output: "S"
        Console.WriteLine(Char.ToLower('M'));           //-----------  Output: "m"
        Console.WriteLine('x'.ToString());              //-----------  Output: "x"
    }
}
1.1.3 浮点数值类型
  1. 浮点数值类型表示实数。
  2. 所有浮点型数值类型均为值类型。
  3. 它们还是简单类型,可以使用文本进行初始化。
  4. 所有浮点数值类型都支持算术、比较和相等运算符。

浮点类型的特征

在这里插入图片描述
在上表中,最左侧列中的每个 C# 类型关键字都是相应 .NET 类型的别名。 它们是可互换的。 例如,以下声明声明了相同类型的变量:

double a = 12.3;
System.Double b = 12.3;

注意:decimal与 float 和 double 相比,decimal 类型具有更高的精度和更小的范围,因此它适合于财务和货币计算

举个栗子

	/**
	 * 基础浮点类型赋值
	 * 将 _ 用作数字分隔符(从 C# 7.0 开始提供支持)。 
	 * 可以将数字分隔符用于所有类型的数字文本。
	 */
	double d = 3D;
	d = 4d;
	d = 3.934_001;
	
	float f = 3_000.5F;
	f = 5.4f;
	
	decimal myMoney = 3_000.5m;
	myMoney = 400.75M;
	
	/**
	 * 1.可在表达式中将整型类型与 float 和 double 类型混合使用功能。 
	 *  在这种情况下,整型类型隐式转换为其中一种浮点类型且必要时,float 类型隐式转换为 double。 
	 *  此表达式的计算方式如下:
	 *      (1)如果表达式中有 double 类型,则表达式在关系比较和相等比较中求值得到 double 或 bool。
	 *      (2)如果表达式中没有 double 类型,则表达式在关系比较和相等比较中求值得到 float 或 bool。
	 * 2.你还可在表达式中混合使用整型类型和 decimal 类型。 
	 *  在这种情况下,整型类型隐式转换为 decimal 类型,并且表达式在关系比较和相等比较中求值得到 decimal 或 bool。
	 *  注意:不能在表达式中将 decimal 类型与 float 和 double 类型混合使用。 
	 *  在这种情况下,
	 *      如果你想要执行算术运算、比较运算或相等运算,
	 *      则必须将操作数显式转换为 decimal 或反向转换,
	 *  如下例所示:
	 */
	double a = 1.0;
	decimal b = 2.1m;
	Console.WriteLine(a + (double)b);
	Console.WriteLine((decimal)a + b);

1.2 枚举类型

枚举类型 是由基础整型数值类型的一组命名常量定义的值类型。

	/**
     *默认情况下,枚举成员的关联常数值为类型 int;
     *它们从零开始,并按定义文本顺序递增 1。
     */
    enum Season
    {
        Spring,
        Summer,
        Autumn,
        Winter
    }
    //可以显式指定任何其他整数数值类型作为枚举类型的基础类型
    enum ErrorCode : ushort
    {
        None = 0,
        Unknown = 1,
        ConnectionLost = 100,
        OutlierReading = 200
    }
    //转换和使用
    public class EnumConversionExample
    {
        public static void Main()
        {
            Season a = Season.Autumn;
            Console.WriteLine($"Integral value of {a} is {(int)a}");  // output: Integral value of Autumn is 2

            var b = (Season)1;
            Console.WriteLine(b);  // output: Summer

            var c = (Season)4;
            Console.WriteLine(c);  // output: 4
        }
    }

1.3 结构类型

结构类型(“structure type”或“struct type”)是一种可封装数据和相关功能的值类型

public struct Coords
{
    public Coords(double x, double y)
    {
        X = x;
        Y = y;
    }

    public double X { get; }
    public double Y { get; }

    public override string ToString() => $"({X}, {Y})";
}

注意:

  • 结构类型具有值语义 。
  • 也就是说,结构类型的变量包含类型的实例。
  • 默认情况下,在分配中,通过将参数传递给方法并返回方法结果来复制变量值。
  • 对于结构类型变量,将复制该类型的实例。

1.4 可为空的值类型

C# 8.0 引入了可为空引用类型功能。

可为 null 值类型 T? 表示其基础值类型 T 的所有值及额外的 null 值。
例如,可以将以下三个值中的任意一个指定给 bool? 变量:true、false 或 null。
基础值类型 T 本身不能是可为空的值类型。

	/**
	 * 声明和赋值
	 *  由于值类型可隐式转换为相应的可为空的值类型,
	 *  因此可以像向其基础值类型赋值一样,向可为空值类型的变量赋值。 
	 *  还可分配 null 值。
	 */
	double? pi = 3.14;
	char? letter = 'a';
	
	int m2 = 10;
	int? m = m2;
	
	bool? flag = null;
	
	// An array of a nullable value type:
	int?[] arr = new int?[10];
	
	/**
	 * 检查可为空值类型的实例
	 *  从 C# 7.0 开始,可以将 is 运算符与类型模式 结合使用,
	 *  既检查 null 的可为空值类型的实例,
	 *  又检索基础类型的值
	 */
	int? a = 42;
	if (a is int valueOfA)
	{
	    Console.WriteLine($"a is {valueOfA}");
	}
	else
	{
	    Console.WriteLine("a does not have a value");
	}
	// Output:
	// a is 42
	
	/**
	 * 始终可以使用以下只读属性来检查和获取可为空值类型变量的值:
	 *  Nullable<T>.HasValue 指示可为空值类型的实例是否有基础类型的值。
	 *  如果 HasValue 为 true,则 Nullable<T>.Value 获取基础类型的值。 
	 *  如果 HasValue 为 false,则 Value 属性将引发 InvalidOperationException。
	 */
	int? b = 10;
	if (b.HasValue)
	{
	    Console.WriteLine($"b is {b.Value}");
	}
	else
	{
	    Console.WriteLine("b does not have a value");
	}
	// Output:
	// b is 10
	
	/**
	 * 还可将可为空的值类型的变量与 null 进行比较,而不是使用 HasValue 属性
	 */
	int? c = 7;
	if (c != null)
	{
	    Console.WriteLine($"c is {c.Value}");
	}
	else
	{
	    Console.WriteLine("c does not have a value");
	}
	// Output:
	// c is 7

1.5 元祖类型

元组功能在 C# 7.0 及更高版本中可用,它提供了简洁的语法,用于将多个数据元素分组成一个轻型数据结构

	/**
	 * 如何声明元组变量、对它进行初始化并访问其数据成员
	 */
	(double, int) t1 = (4.5, 3);
	Console.WriteLine($"Tuple with elements {t1.Item1} and {t1.Item2}.");
	// Output:
	// Tuple with elements 4.5 and 3.
	
	(double Sum, int Count) t2 = (4.5, 3);
	Console.WriteLine($"Sum of {t2.Count} elements is {t2.Sum}.");
	// Output:
	// Sum of 3 elements is 4.5.
	/**
	 * 如前面的示例所示,
	 * 若要定义元组类型,
	 * 需要指定其所有数据成员的类型,
	 * 或者,
	 * 可以指定字段名称。 
	 * 虽然不能在元组类型中定义方法,
	 * 但可以使用 .NET 提供的方法
	 */
	(double, int) t = (4.5, 3);
	Console.WriteLine(t.ToString());
	Console.WriteLine($"Hash code of {t} is {t.GetHashCode()}.");
	// Output:
	// (4.5, 3)
	// Hash code of (4.5, 3) is 718460086.
            

举个栗子

var xs = new[] { 4, 7, 9 };
var limits = FindMinMax(xs);
Console.WriteLine($"Limits of [{string.Join(" ", xs)}] are {limits.min} and {limits.max}");
// Output:
// Limits of [4 7 9] are 4 and 9

var ys = new[] { -9, 0, 67, 100 };
var (minimum, maximum) = FindMinMax(ys);
Console.WriteLine($"Limits of [{string.Join(" ", ys)}] are {minimum} and {maximum}");
// Output:
// Limits of [-9 0 67 100] are -9 and 100

(int min, int max) FindMinMax(int[] input)
{
    if (input is null || input.Length == 0)
    {
        throw new ArgumentException("Cannot find minimum and maximum of a null or empty array.");
    }

    var min = int.MaxValue;
    var max = int.MinValue;
    foreach (var i in input)
    {
        if (i < min)
        {
            min = i;
        }
        if (i > max)
        {
            max = i;
        }
    }
    return (min, max);
}

2. 值类型

2.1 类类型(class)

class TestClass
{
    // Methods, properties, fields, events, delegates
    // and nested classes go here.
}

在 C# 中仅允许单一继承。 也就是说,一个类仅能从一个基类继承实现。 但是,一个类可实现多个接口。

在这里插入图片描述

举个例子

	/**
    *下面的示例说明如何声明类字段、构造函数和方法。 
    *该示例还说明如何实例化对象及如何打印实例数据。 
    *本例声明了两个类。 
    *第一个类 Child 包含两个私*有字段(name 和 age)、两个公共构造函数和一个公共方法。 
    *第二个类 StringTest 用于包含 Main。
    */
    class Child
    {
        private int age;
        private string name;

        // Default constructor:
        public Child()
        {
            name = "N/A";
        }

        // Constructor:
        public Child(string name, int age)
        {
            this.name = name;
            this.age = age;
        }

        // Printing method:
        public void PrintChild()
        {
            Console.WriteLine("{0}, {1} years old.", name, age);
        }
    }

    class StringTest
    {
        static void Main()
        {
            // Create objects by using the new operator:
            Child child1 = new Child("Craig", 11);
            Child child2 = new Child("Sally", 10);

            // Create an object using the default constructor:
            Child child3 = new Child();

            // Display results:
            Console.Write("Child #1: ");
            child1.PrintChild();
            Console.Write("Child #2: ");
            child2.PrintChild();
            Console.Write("Child #3: ");
            child3.PrintChild();
        }
    }
    /* Output:
        Child #1: Craig, 11 years old.
        Child #2: Sally, 10 years old.
        Child #3: N/A, 0 years old.
    */

2.2 接口

  1. 接口定义协定。
  2. 实现该协定的任何 class 或 struct 必须提供接口中定义的成员的实现。

注意:从 C# 8.0 开始,接口可为成员定义默认实现。 它还可以定义 static 成员,以便提供常见功能的单个实现

interface ISampleInterface
{
    void SampleMethod();
}

class ImplementationClass : ISampleInterface
{
    // Explicit interface member implementation:
    void ISampleInterface.SampleMethod()
    {
        // Method implementation.
    }

    static void Main()
    {
        // Declare an interface instance.
        ISampleInterface obj = new ImplementationClass();

        // Call the member.
        obj.SampleMethod();
    }
}

举个栗子

interface IPoint
{
   // Property signatures:
   int X
   {
      get;
      set;
   }

   int Y
   {
      get;
      set;
   }

   double Distance
   {
       get;
   }
}

class Point : IPoint
{
   // Constructor:
   public Point(int x, int y)
   {
      X = x;
      Y = y;
   }

   // Property implementation:
   public int X { get; set; }

   public int Y { get; set; }

   // Property implementation
   public double Distance =>
      Math.Sqrt(X * X + Y * Y);

}

class MainClass
{
   static void PrintPoint(IPoint p)
   {
      Console.WriteLine("x={0}, y={1}", p.X, p.Y);
   }

   static void Main()
   {
      IPoint p = new Point(2, 3);
      Console.Write("My Point: ");
      PrintPoint(p);
   }
}
// Output: My Point: x=2, y=3

2.3 数组类型

  1. 可以将同一类型的多个变量存储在一个数组数据结构中。
  2. 通过指定数组的元素类型来声明数组。
  3. 如果希望数组存储任意类型的元素,可将其类型指定为 object。
type[] arrayName;

举个栗子

class TestArraysClass
{
    static void Main()
    {
        // Declare a single-dimensional array of 5 integers.
        int[] array1 = new int[5];

        // Declare and set array element values.
        int[] array2 = new int[] { 1, 3, 5, 7, 9 };

        // Alternative syntax.
        int[] array3 = { 1, 2, 3, 4, 5, 6 };

        // Declare a two dimensional array.
        int[,] multiDimensionalArray1 = new int[2, 3];

        // Declare and set array element values.
        int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };

        // Declare a jagged array.
        int[][] jaggedArray = new int[6][];

        // Set the values of the first array in the jagged array structure.
        jaggedArray[0] = new int[4] { 1, 2, 3, 4 };
    }
}

特点

  • 数组可以是一维、多维或交错的。
  • 创建数组实例时,将建立纬度数量和每个纬度的长度。 这些值在实例的生存期内无法更改。
  • 数值数组元素的默认值设置为零,而引用元素设置为 null。
  • 交错数组是数组的数组,因此其元素为引用类型且被初始化为 null。
  • 数组从零开始编制索引:包含 n 元素的数组从 0 索引到 n-1。
  • 数组元素可以是任何类型,其中包括数组类型。
  • 数组类型是从抽象的基类型 Array 派生的引用类型。 由于此类型实现 IEnumerable 和 IEnumerable,因此可以在 C# 中的所有数组上使用 foreach 迭代。

2.4 委托(这个内容比较多)

  1. 类型的声明与方法签名相似。
  2. 它有一个返回值和任意数目任意类型的参数
public delegate void MessageDelegate(string message);
public delegate int AnotherDelegate(MyType m, long num);
  • 在 .NET 中,System.Action 和 System.Func 类型为许多常见委托提供泛型定义。
  • 可能不需要定义新的自定义委托类型。
  • 相反,可以创建提供的泛型类型的实例化。

二、 类型和成员

在这里插入图片描述

三、程序构建基块

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# -(二)最详细基础语法 的相关文章

  • 当我在组合框中选择一个项目时,如何防止 TextChanged 事件?

    我有一个TextChanged http msdn microsoft com en us library system windows forms control textchanged aspx我的事件ComboBox http msd
  • 计算 XML 中特定 XML 节点的数量

    请参阅此 XML
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • GetType() 在 Type 实例上返回什么?

    我在一些调试过程中遇到了这段代码 private bool HasBaseType Type type out Type baseType Type originalType type GetType baseType GetBaseTyp
  • 查找进程的完整路径

    我已经编写了 C 控制台应用程序 当我启动应用程序时 不使用cmd 我可以看到它列在任务管理器的进程列表中 现在我需要编写另一个应用程序 在其中我需要查找以前的应用程序是否正在运行 我知道应用程序名称和路径 所以我已将管理对象搜索器查询写入
  • 如何填充 ToolStripComboBox?

    我发现它很难将数据绑定到ToolStripComboBox 好像没有这个ValueMember and DisplayMember特性 怎么绑定呢 访问toolstripcombobox中包装的组合框并访问其ValueMember Disp
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • 查看 NuGet 包依赖关系层次结构

    有没有一种方法 文本或图形 来查看 NuGet 包之间的依赖关系层次结构 如果您使用的是新的 csproj 您可以在此处获取所有依赖项 在项目构建后 项目目录 obj project assets json
  • 对 std::vector 进行排序但忽略某个数字

    我有一个std vector
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 告诉 Nancy 将枚举序列化为字符串

    Nancy 默认情况下在生成 JSON 响应时将枚举序列化为整数 我需要将枚举序列化为字符串 有一种方法可以通过创建来自定义 Nancy 的 JSON 序列化JavaScript 原始转换器 https github com NancyFx
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 如何在richtextbox中使用多颜色[重复]

    这个问题在这里已经有答案了 我使用 C windows 窗体 并且有 richtextbox 我想将一些文本设置为红色 一些设置为绿色 一些设置为黑色 怎么办呢 附图片 System Windows Forms RichTextBox有一个
  • 使用 C 在 OS X 中获取其他进程的 argv

    我想获得其他进程的argv 例如ps 我使用的是在 Intel 或 PowerPC 上运行的 Mac OS X 10 4 11 首先 我阅读了 ps 和 man kvm 的代码 然后编写了一些 C 代码 include
  • 灵气序列解析问题

    我在使用 Spirit Qi 2 4 编写解析器时遇到一些问题 我有一系列键值对以以下格式解析
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str

随机推荐

  • 微信小程序导出当前画布指定区域的内容并生成图片保存到本地相册(canvas)

    最近在学小程序 在把当前画布指定区域的内容导出并生成图片保存到本地这个知识点上踩坑了 这里用到的方法是 wx canvasToTempFilePath 该方法作用是把当前画布指定区域的内容导出生成指定大小的图片 并返回文件路径 详情 看文档
  • Idea快捷键大全(Windows)

    转载 Idea快捷键大全 Windows Lymanyu的博客 CSDN博客 idea快捷键
  • spring+shiro多节点session共享

    shiro我就不多介绍了 我的方案是重写 shiro的sessionDAO 把session存储到redis上 直接上代码 一 spring中配置
  • Node.js 利用Promise对象并发写入流、读取流(Stream)

    上篇文章我们用高阶函数 函数柯里化 实现并发文件读取流 写入流 今天 我们用另外一种方法实现 let fs require fa 写一个通用的读取函数 返回promise对象 function getFile filename return
  • php 下载七牛文件上传,laravel下封装的七牛云图片上传下载方法

    fileName 文件名 filePath 文件路径 我用的是七牛云私有空间 如果用公有空间也一样 只是不需要下载方法而已
  • 042_前端规范 2021-06-03

    042 前端规范 最终目的 去除冗余 让代码易于维护 常见代码片段 遍历数组 1 2 3 forEach function value index console log value 映射新数组 arr 1 2 3 map v gt v 2
  • 如何在word中的图片上画圈标注_怎么在word画圈标注 如何在word图片中进行画圈标示...

    例如上面在图片上画圈效果的制作方法 1 单击插入 形状 线条 椭圆工具 2 拖动鼠标 在图片所需要的位置绘制一个适当大小的圆 3 单击绘图工具格式 形状填充 无填充颜色 4 单击绘图工具格式 形状轮廓 红色即可 如图所示 怎么用Word画简
  • JAVA基础之接口

    什么是接口 接口是一种特殊的类 但与类有本质区别 类中有成员方法和成员变量但是接口中只有常量和用abstract定义的方法 接口的声明采用关键字interface 格式 修饰符 interface 接口名 方法体 接口可以多继承 使用关键字
  • easypoi Excel导入导出 (工具类)

    1 用到的jar 红色的必须的 下面那些是运行起来 缺哪个就导哪个 如果报错提示没有这个方法的话 重启Tomcat 还不好使就是jar包版本不对 找个高点的版本 easypoi annotation 3 1 0 jar easypoi ba
  • SQL server数据库与My sql数据库的区别?

    在我们生活中无时无刻不需要使用到数据库 网络爬虫等一系列用处 那数据库到底是什么呢 我们一起接着往下看 数据库是存放数据的仓库 存储空间很大 可千万条 上亿条数据 但是数据库并不是随意地将数据进行存放 是有一定规则的 否则查询的效率会很低
  • Python最短代码实现人脸识别,打造自己专用人脸识别!

    对于类似于人脸的对象 你或许需要不少于 6000个分类器 每一个都需要成功匹配 当然 有容错率 才能检测出人脸 但这有一个问题 对于人脸识别 算法从左上角开始计算一个个数据块 不停问 这是张脸吗 每个数据块有超过 6000个检测 加起来的计
  • GM(1,1)预测模型的残差检验、关联度检验、后验差检验代码

    在建立好灰色模型后 首先要进行模型的检验 以检验模型的效果 一般有三种检验方法 相对残差检验 关联度检验 后验差检验 当三种检验全部通过时 表明模型的效果较好 才可以使用模型进行后续的预测 否则 将要对模型进行残差修正 直到三种检验均通过为
  • 引入PageHelper未进行分页操作SQL自动携带Limit 分页参数

    使用环境 PageHelper 版本 5 2 0 数据库类型和版本 mysql5 7 JDBC URL jdbc mysql x x x characterEncoding UTF 8 useAffectedRows true allowM
  • springboot序列化问题

    springboot的Long 前后端交互失去精度 BigDecimal序列化 精度问题 为空字段不序列化问题 方案1 为空字段序列化 always application yml配置 为空字段不序列化 non null spring ja
  • 【Elasticsearch】Elasticsearch命令行操作

    文章目录 Elasticsearch 一 ES介绍 二 安装Elasticsearch 三 安装Kibana 四 介绍ES中的一些概念 集群 节点 索引 数据库 文档 数据库中表中一条记录 分片 副本 五 操作ES 5 1索引 5 1 1
  • 【工具】IDEA下ANTLR Preview的使用

    1 概述 打开界面 如何查看树形结构呢 输入一个语句你想解析的语句放进去 发现没什么卵用 此时打开 g4文件
  • SQL注入的几种类型和原理

    在上一章节中 介绍了SQL注入的原理以及注入过程中的一些函数 但是具体的如何注入 常见的注入类型 没有进行介绍 这一章节我想对常见的注入类型进行一个了解 能够自己进行注入测试 注意 以下这些类型实在slqi labs环境 也就是MySQL
  • k8s--基础--22.12--storageclass--类型--Portworx 卷

    k8s 基础 22 12 storageclass 类型 Portworx 卷 1 案例 apiVersion storage k8s io v1 kind StorageClass metadata name portworx io pr
  • 蓝桥杯2020.07省赛B组 Java

    蓝桥杯2020 07省赛B组 整除序列 大数模拟 解码 遍历枚举 走方格 简单的dp 整数拼接 网络分析 超级胶水 整除序列 大数模拟 有一个序列 序列的第一个数是 n 后面的每个数是前一个数整除 2 请输出这个序列中值为正数的项 输入格式
  • C# -(二)最详细基础语法

    C 基础语法 学习思维导图 一 类型系统 C 有两种类型 值类型和引用类型 值类型的变量直接包含数据 而引用类型的变量则存储对数据 称为 对象 的引用 对于引用类型 两个变量可以引用同一个对象 对一个变量执行的运算可能会影响另一个变量引用的