返回顶部
首页 > 资讯 > 精选 >C# .NET使用操作符的方法有哪些
  • 107
分享到

C# .NET使用操作符的方法有哪些

2023-06-03 15:06:52 107人浏览 独家记忆
摘要

这篇文章主要介绍“C# .net使用操作符的方法有哪些”,在日常操作中,相信很多人在C# .NET使用操作符的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C# .NET使用操作符的方法有哪些”的疑

这篇文章主要介绍“C# .net使用操作符的方法有哪些”,在日常操作中,相信很多人在C# .NET使用操作符的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C# .NET使用操作符的方法有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

操作符的重载

操作符重载大部分语言都没有,而 C# 有。C# 允许用户定义类型对操作符进行重载,方式是使用 operate 关键字把操作符写成公开静态函数。下面来演示一下重载 + 这个操作符。

我们创建一个 Complex 结构类型来代表一个复数,我们知道复数有实数和虚数组成,于是可以这样定义:

public struct Complex{    public double Real { get; set; }    public double Imaginary { get; set; }}

现在我们想实现复数的相加操作,即:

Complex a = new Complex() { Real = 1, Imaginary = 2 };Complex b = new Complex() { Real = 4, Imaginary = 8 };Complex c = a + b;

默认情况,自定义类是不能进行算术运算的,以上 a + b 会编译报错,我们需要对 + 进行操作符重载:

public static Complex operator +(Complex c1, Complex c2){    return new Complex    {        Real = c1.Real + c2.Real,        Imaginary = c1.Imaginary + c2.Imaginary    };}

C# 中像加减乘除等这类操作符都可以重载,也有些操作符是不能重载的,具体请查看文末参考链接。

隐式和显式转换操作符

我们知道子类可以隐式转换为父类,在某种情况下(如父类由子类赋值而来)父类可以显式转换为子类。

在 C# 中,对于没有子父类关系的用户定义类型,也是可以实现显式和隐式转换的。C# 允许用户定义类型通过使用 implicit 和 explicit 关键字来控制对象的赋值和对象的类型转换。它的定义形式如下:

public static <implicit/explicit> operator <结果类型>(<源类型> myType)

这里以结果类型为方法名,源类型对象作为参数,只能是这一个参数,不能定义第二个参数,但可以通过该参数对象访问其类的私有成员。下面是一个既有显式又有隐式转换操作符的例子:

public class BinaryImage{    private readonly bool[] _pixels;    // 隐式转换操作符示例    public static implicit operator ColorImage(BinaryImage bm)    {        return new ColorImage(bm);    }    // 显式转换操作符示例    public static explicit operator bool[](BinaryImage bm)    {        return bm._pixels;    }}public class ColorImage{    public ColorImage(BinaryImage bm) { }}

这样,我们就可以把 BinaryImage 对象隐式转换为 ColorImage 对象,把 BinaryImage 对象显式转换为 bool 数组对象:

var binaryImage = new BinaryImage();ColorImage colorImage = binaryImage; // 隐式转换bool[] pixels = (bool[])binaryImage; // 显式转换

而且转换操作符可以定义为双向显示和隐式转换。既可从你的类型而来,亦可到你的类型而去:

public class BinaryImage{    public BinaryImage(ColorImage cm) { }    public static implicit operator ColorImage(BinaryImage bm)    {        return new ColorImage(bm);    }    public static explicit operator BinaryImage(ColorImage cm)    {        return new BinaryImage(cm);    }}

我们知道 as 操作符也是一种显式转换操作符,那它适用于上面的这种情况吗,即:

ColorImage cm = myBinaryImage as ColorImage;

你觉得这样写有问题吗?请在评论区告诉我答案。

空条件和空联合操作符

空条件(Null Conditional)操作符 ?. 和空联合(Null Coalescing)操作符 ??,都是 C# 6.0 的语法,大多数人都很熟悉了,使用也很简单。

?. 操作符会在对象为 null 时立即返回 null,不为 null 时才会调用后面的代码。其中的符号 ? 代表对象本身,符号 . 代表调用,后面不仅可以是对象的属性也可以是索引器或方法。以该操作符为分隔的每一截类型相同时可以接龙。示例:

var bar = foo?.Value; // 相当于 foo == null ? null : foo.Valuevar bar = foo?.StringValue?.ToString(); // 每一截类型相同支持接龙var bar = foo?.IntValue?.ToString(); // 每一截类型不同,不能接龙,因为结果类型无法确定

如果是调用索引器,则不需要符号 .,比如:

var foo = new[] { 1, 2, 3 };var bar = foo?[1]; // 相当于 foo == null ? null : foo[1]

空联合操作符 ??,当左边为空时则返回右边的值,否则返回左边的值。同样,每一截的类型相同时支持接龙。

var fizz = foo.GetBar() ?? bar;var buzz = foo ?? bar ?? fizz;

=> Lambda 操作符

Lambda 操作符,即 =>,它用来定义 Lambda 表达式,也被广泛用于 LINQ 查询。它的一般定义形式如下:

(input parameters) => expression

示例:

string[] Words = { "cherry", "apple", "blueberry" };int minLength = words.Min((string w) => w.Length);

实际应用中我们一般省略参数的类型声明:

int minLength = words.Min(w => w.Length);

Lambda 操作符的后面可以是表达式,可以是语句,也可以是语句块,比如:

// 表达式(int x, int y) => x + y// 语句(string x) => Console.WriteLine(x)// 语句块(string x) => {    x += " says Hello!";    Console.WriteLine(x);}

这个操作符也可以很方便的用来定义委托方法(其实 Lambda 操作符就是由委托演变而来)。

单独定义委托方法:

void MyMethod(string s){    Console.WriteLine(s + " World");}delegate void TestDelegate(string s);TestDelegate myDelegate = MyMethod;myDelegate("Hello");

使用 Lambda 操作符:

delegate void TestDelegate(string s);TestDelegate myDelegate = s => Console.WriteLine(s + " World");myDelegate("Hello");

在一个类中,当实现体只有一句代码时,也可以用 Lambda 操作符对方法和 Setter / Getter 进行简写:

public class Test{    public int MyProp { get => 123; }    public void MyMethod() => Console.WriteLine("Hello!");}

到此,关于“C# .NET使用操作符的方法有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: C# .NET使用操作符的方法有哪些

本文链接: https://lsjlt.com/news/234793.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C# .NET使用操作符的方法有哪些
    这篇文章主要介绍“C# .NET使用操作符的方法有哪些”,在日常操作中,相信很多人在C# .NET使用操作符的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C# .NET使用操作符的方法有哪些”的疑...
    99+
    2023-06-03
  • c++操作符有哪些
    c++ 提供广泛的运算符集,分类如下:算术运算符(+、-、*、/、%、++、--)赋值运算符(=、+=、-=、*=、/=、%=)比较运算符(==、!=、、=)逻辑运算符(&、|、...
    99+
    2024-04-22
    c++
  • C#操作Excel的方法有哪些
    这篇文章主要介绍“C#操作Excel的方法有哪些”,在日常操作中,相信很多人在C#操作Excel的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#操作Excel的方法有哪些”的疑惑有所帮助!接下来...
    99+
    2023-06-18
  • C# XML的操作方法有哪些
    C#中可以使用以下方法来操作XML:1. XmlDocument类:该类提供了一系列的方法用于加载、创建、修改和保存XML文档。常见...
    99+
    2023-09-12
    C#
  • C语言中的字符串操作方法有哪些
    本文小编为大家详细介绍“C语言中的字符串操作方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中的字符串操作方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。字符串在C语言里使用非常多,因为很...
    99+
    2023-06-29
  • 字符串有哪些操作方法
    小编给大家分享一下字符串有哪些操作方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!字符串属性和方法字符串用于表示和操作字符序列...
    99+
    2024-04-02
  • C语言有哪些操作符
    这篇文章将为大家详细讲解有关C语言有哪些操作符,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.单目操作符之前有了解到的三目操作符(?:),指的是有三个操作数例如:3+5其中,+是一个操作符3是左操作数5...
    99+
    2023-06-29
  • c#中mongodb的操作方法有哪些
    在C#中使用MongoDB操作数据的方法有以下几种: 使用官方提供的MongoDB.Driver库进行操作,该库提供了一系列的AP...
    99+
    2024-04-09
    c# mongodb
  • Python字符串操作方法有哪些
    本篇内容主要讲解“Python字符串操作方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python字符串操作方法有哪些”吧!Python字符串中字符大小写的变换: * S.l...
    99+
    2023-06-17
  • 有哪些shell字符串操作方法
    本篇内容主要讲解“有哪些shell字符串操作方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些shell字符串操作方法”吧!1,取得字符串长度代码如下:string=abc12342341...
    99+
    2023-06-09
  • C#线程操作常见的操作方法有哪些
    这篇文章主要讲解了“C#线程操作常见的操作方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#线程操作常见的操作方法有哪些”吧!C#线程操作常见的操作方法是什么呢?C#线程操作方法的...
    99+
    2023-06-17
  • 使用ABAP操作Excel的方法有哪些
    本篇内容介绍了“使用ABAP操作Excel的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在SAPGUI里根据关键字OLE搜索,能...
    99+
    2023-06-04
  • C#中路径的操作方法有哪些
    这篇文章主要介绍了C#中路径的操作方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。判定一个给定的C#路径是否有效,合法通过Path.GetInvalidPathCha...
    99+
    2023-06-18
  • js中操作字符串的方法有哪些
    小编给大家分享一下js中操作字符串的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!var a = '世界上最远...
    99+
    2024-04-02
  • Python3中字符串的常用操作方法有哪些
    这篇文章主要介绍了Python3中字符串的常用操作方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python3中字符串的常用操作方法有哪些文章都会有所收获,下面我们一...
    99+
    2024-04-02
  • python中字符串操作方法有哪些
    这期内容当中小编将会给大家带来有关python中字符串操作方法有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决...
    99+
    2023-06-14
  • php中字符串有哪些操作方法
    这篇文章主要介绍“php中字符串有哪些操作方法”,在日常操作中,相信很多人在php中字符串有哪些操作方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中字符串有哪些操作方法”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-20
  • C/C++中关于字符串的常见函数操作方法有哪些
    本篇内容介绍了“C/C++中关于字符串的常见函数操作方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!wcsncpy_swcsncpy...
    99+
    2023-07-05
  • C语言文件的操作方法有哪些
    这篇文章主要讲解了“C语言文件的操作方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言文件的操作方法有哪些”吧!文件的顺序读写字符输入输出fgetc和fputcfgetc:字符输...
    99+
    2023-06-29
  • C语言数组的操作方法有哪些
    本篇内容主要讲解“C语言数组的操作方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言数组的操作方法有哪些”吧!一、一维数组1.创建//如何创建数组int num[10];c...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作