C#语言基础速成Day06

news2024/9/17 21:00:33

“心之官则思,思则得之,不思则不得也。”

目录

  • 前言
    • 文章有误敬请斧正 不胜感恩!||Day06
  • 一、C#属性访问器、方法参数
      • 属性访问器(Property Accessors)
      • 方法参数(Method Parameters)
      • 综合示例
  • 二、C#字符串,StringBuilder
      • `string` 类
      • `StringBuilder` 类
      • 综合示例
    • 总结


前言

昨天我们学习了C#面向对象和高级特性:,今天我们来学习C#属性访问器、方法参数和C#字符串,StringBuilder的一些内容。


文章有误敬请斧正 不胜感恩!||Day06

以下是本篇文章正文内容:

一、C#属性访问器、方法参数

在C#中,属性访问器和方法参数是常用的两个概念,分别用于管理类的属性和方法的参数传递。我们可以用以下的例子了解今天所学:

属性访问器(Property Accessors)

属性(Properties)允许你控制类的字段的访问和赋值。属性访问器包括 get 访问器和 set 访问器。

  • get 访问器:用于读取属性值。
  • set 访问器:用于写入属性值。

示例

public class Person
{
    private string name;

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }
}

在这个示例中,Name 属性有一个 get 访问器和一个 set 访问器,分别用于获取和设置 name 字段的值。

方法参数(Method Parameters)

方法参数是传递给方法的值。C#中有多种类型的方法参数:

  1. 值参数(Value Parameters):默认类型,通过值传递参数,方法内部对参数的修改不会影响原来的变量。

    示例

    public void PrintValue(int number)
    {
        Console.WriteLine(number);
    }
    
  2. 引用参数(Reference Parameters):通过引用传递参数,方法内部对参数的修改会影响原来的变量。使用 ref 关键字。

    示例

    public void ModifyValue(ref int number)
    {
        number = 100;
    }
    
  3. 输出参数(Output Parameters):用于返回多个值,使用 out 关键字。

    示例

    public void GetValues(out int number1, out int number2)
    {
        number1 = 1;
        number2 = 2;
    }
    
  4. 参数数组(Parameter Arrays):允许方法接受可变数量的参数,使用 params 关键字。

    示例

    public void PrintNumbers(params int[] numbers)
    {
        foreach (int number in numbers)
        {
            Console.WriteLine(number);
        }
    }
    

综合示例

关于属性访问器和方法参数的代码已经给出,有兴趣的小伙伴可以自己试着尝试一下。
以下示例展示了属性访问器和方法参数的结合使用:

public class Student
{
    private int id;

    public int ID
    {
        get { return id; }
        set { id = value; }
    }

    public void UpdateID(ref int newID)
    {
        ID = newID;
    }

    public void GetStudentInfo(out int id, out string name)
    {
        id = ID;
        name = "John Doe";
    }

    public void PrintDetails(params string[] details)
    {
        foreach (string detail in details)
        {
            Console.WriteLine(detail);
        }
    }
}

下面我们来看另一个例子:
在这里插入图片描述
在这个例子中,Student 类有一个 ID 属性和三个方法:UpdateID 使用 ref 参数修改 IDGetStudentInfo 使用 out 参数返回多个值,PrintDetails 使用 params 参数数组打印多个细节信息。

二、C#字符串,StringBuilder

在C#中,字符串处理是一个常见的任务,主要通过string类和StringBuilder类来完成。两者都有各自的用途和特点。

string

string类用于表示不可变的字符串。这意味着一旦创建,字符串的内容就无法更改。所有对字符串的操作(如拼接、截取等)都会返回一个新的字符串对象,而不是修改原来的字符串。

常用操作

  1. 创建字符串

    string str = "Hello, World!";
    
  2. 拼接字符串

    string str1 = "Hello";
    string str2 = "World";
    string result = str1 + ", " + str2 + "!";
    
  3. 格式化字符串

    string name = "Alice";
    int age = 30;
    string formattedString = string.Format("Name: {0}, Age: {1}", name, age);
    // 使用插值字符串
    string interpolatedString = $"Name: {name}, Age: {age}";
    
  4. 字符串操作

    string original = "Hello, World!";
    string upper = original.ToUpper();        // "HELLO, WORLD!"
    string lower = original.ToLower();        // "hello, world!"
    bool contains = original.Contains("World"); // true
    string substring = original.Substring(7, 5); // "World"
    

StringBuilder

StringBuilder类用于处理需要频繁修改的字符串,尤其是在循环中进行字符串拼接或其他操作时。StringBuilder是可变的,这意味着你可以直接修改其内容,而不会创建新的对象,从而提高性能。

常用操作

  1. 创建StringBuilder

    StringBuilder sb = new StringBuilder();
    
  2. 添加字符串

    sb.Append("Hello");
    sb.Append(", ");
    sb.Append("World!");
    
  3. 插入字符串

    sb.Insert(5, " there"); // 在索引5处插入" there"
    
  4. 删除字符串

    sb.Remove(5, 6); // 从索引5开始删除6个字符
    
  5. 替换字符串

    sb.Replace("World", "C#"); // 将"World"替换为"C#"
    
  6. 转换为字符串

    string result = sb.ToString();
    

综合示例

在这里插入图片描述

using System;
using System.Text;

class Program
{
    static void Main()
    {
        // 使用 string 类
        string str1 = "Hello";
        string str2 = "World";
        string result = str1 + ", " + str2 + "!";
        Console.WriteLine(result); // 输出: Hello, World!

        // 使用 StringBuilder 类
        StringBuilder sb = new StringBuilder();
        sb.Append("Hello");
        sb.Append(", ");
        sb.Append("World!");
        Console.WriteLine(sb.ToString()); // 输出: Hello, World!

        // StringBuilder 插入、删除和替换
        sb.Insert(5, " there");
        Console.WriteLine(sb.ToString()); // 输出: Hello there, World!

        sb.Remove(5, 6);
        Console.WriteLine(sb.ToString()); // 输出: Hello, World!

        sb.Replace("World", "C#");
        Console.WriteLine(sb.ToString()); // 输出: Hello, C#!
    }
}

总结

  1. string适用于不需要频繁修改内容的场景,因为每次修改都会创建一个新的字符串对象。
  2. StringBuilder适用于需要频繁修改字符串内容的场景,因为它是可变的,可以直接修改而不会创建新的对象,从而提高性能。
    今天就分享到这里,我们明天见·~~~~~~~

哦,对了。我们C#语言的基础部分就快要结束了,后面还有更加深奥的知识等着我们。前面的区域以后再来探索吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038586.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小红书种草推广丨爆品层出不穷,品牌还能怎么「造新」?

当品牌已经被大众熟知,要如何在茫茫消费市场中脱颖而出,再度吸引用户的目光? 当品牌陷入增长困境,要如何再造爆品,打造增长的第二曲线,延长品牌的生命周期? …… 就这个大家关心的这些问题&…

三菱定位控制(一)

下面小编开始开始总结学习定位控制,以Q系列三菱PLC来展开学习,希望对读者或者小白有所帮助!!! 一 三菱PLC定位模块 为什么需要学习定位模块(三菱FXCPU能实现一个伺服电机的控制,多个要买定位模…

结构化输出及其使用方法

在 LLM 应用程序中构建稳健性和确定性 图片来自作者 欢迎来到雲闪世界。OpenAI最近宣布其最新的gpt-4o-2024–08–06模型支持结构化输出。与大型语言模型 (LLM) 相关的结构化输出并不是什么新鲜事——开发人员要么使用各种快速工程技术,要么使用第三方工具。 在本文…

异质性空间自回归模型 (HSAR)及 Stata 具体操作步骤

目录 一、引言 二、文献综述 三、理论原理 四、实证模型 五、稳健性检验 六、程序代码及解释 七、代码运行结果 一、引言 在空间计量经济学中,异质性空间自回归模型(Heterogeneous Spatial Autoregressive Model,HSAR)是一种…

深度优化Nginx负载均衡策略,携手Keepalived打造高可用服务架构新纪元

作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客 目录 前言&#…

什么是数据仓库ODS层?为什么需要ODS层?

在大数据时代,数据仓库的重要性不言而喻。它不仅是企业数据存储与管理的核心,更是数据分析与决策支持的重要基础。而在数据仓库的各个层次中,ODS层(Operational Data Store,操作型数据存储)作为关键一环&am…

NVDLA专题4:具体模块介绍——Convolution DMA

概述 Convolution DMA Module的定义在NV_NVDLA_cmda.v中&#xff0c;其module的定义如下&#xff1a; module NV_NVDLA_cdma (cdma_dat2cvif_rd_req_ready //|< i,cdma_dat2mcif_rd_req_ready //|< i,cdma_wt2cvif_rd_req_ready //|< i,cdma_wt2mcif_rd_r…

【Nacos】docker部署nacos服务

docker部署nacos服务 1.直接执行命令2.如果网络出现问题 1.直接执行命令 docker run -e JVM_XMS256m -e JVM_XMX256m --env MODEstandalone \ --name mynacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 \ docker.io/nacos/nacos-server:v2.1.12.如果网络出现问题 执行如下命…

计算机系统基础知识:计算机组成和基本原理

文章目录 1. 总线1.1 系统总线1.2 外总线 2. 中央处理单元2.1 CPU组成运算器控制器寄存器组内部总线 2.2 多核处理器 3. 存储系统3.1 分类3.2 层次结构3.3 主存储器3.4 高速缓存3.5 外存储器3.6 云存储 4. 输入/输出技术4.1 接口的功能和分类4.2 主机和外设间的连接方式4.3 编址…

定制化三防平板:满足个性化需求

定制化服务的核心在于理解并满足用户的个性化需求。对于三防平板而言&#xff0c;这意味着设备不仅需要具备防水、防尘、防摔的基本特性&#xff0c;更需根据用户的特定工作环境和使用习惯&#xff0c;进行功能和设计上的优化。 例如&#xff0c;对于在极端温度环境下作业的人…

51单片机-LED灯蜂鸣器数码管按键DS18B20温度传感器

LDE灯的相关程序 LED灯闪烁 LED流水灯 方法1 方法二&#xff1a; 因为P1口可以直接控制P1^0~P1^7的8个led灯&#xff0c;利用一个8位的二进制数字来进行控制即可。如果要点亮P1^0 只需要给P1口传递 1111 1110即可。 蜂鸣器的使用 什么是蜂鸣器&#xff1f; 蜂鸣器是一种一…

【C++】类和对象 ——中

1. 赋值运算符重载 1.1 运算符重载 • 当运算符被⽤于类类型的对象时&#xff0c;C语⾔允许我们通过运算符重载的形式指定新的含义。C规定类类型对象使⽤运算符时&#xff0c;必须转换成调⽤对应运算符重载&#xff0c;若没有对应的运算符重载&#xff0c;则会编译报错。 •…

Leetcode—1143. 最长公共子序列【中等】

2024每日刷题&#xff08;155&#xff09; Leetcode—1143. 最长公共子序列 实现代码 class Solution { public:int longestCommonSubsequence(string text1, string text2) {int m text1.length();int n text2.length();vector<vector<int>> dp(m 1, vector&…

sadtalker推理的时候报错:IndexError: Cannot choose from an empty sequence

问题描述 在进行推理的时候&#xff0c;报错IndexError: Cannot choose from an empty sequence&#xff0c;如下图 解决办法&#xff1a; 这个报错是因为你输入的音频太短了&#xff0c;不到1秒就会报这个错。你可以输入个大于1秒的视频试一下。 也可以修改代码解决这个问题…

Python教程(十四):Requests模块详解

目录 专栏列表前言&#xff1a;安装 Requests查看包安装情况&#xff1a; RESTful 介绍RESTful API设计原则示例 基本用法1. 查询ID为1的用户&#xff08;GET&#xff09;2. 创建新用户&#xff08;POST&#xff09;3. 更新ID 为 1 的用户&#xff08;PUT&#xff09;4. 删除ID…

Haproxy讲解

Haproxy: haproxy是一个开源的高性能反向代理和负载均衡器&#xff0c;主要用于‌TCP和‌HTTP流量管理。 功能和特点&#xff1a;haproxy能够处理大量的并发连接&#xff0c;支持TCP和HTTP协议&#xff0c;具有高可用性和负载均衡功能。它特别适用于需要处理大量流量的网站&am…

AI终于会画手了,Flux.1一出世就直接碾压Stable Diffusion(SD)和Midjourney(MJ)

Flux.1模型一发布&#xff0c;AI文生图终于会画手了&#xff0c;Flux.1模型比Stable Diffusion&#xff08;SD&#xff09;和Midjourney&#xff08;MJ&#xff09;更能将手部和长文本生成得更好更合理。 Flux.1模型生成的图&#xff0c;现在手部不再有畸形了。 同时&#xff…

hfs通过stunnel实现https访问

hfs通过stunnel实现https访问 REF:官方文档&#xff0c;有点老旧 https://blog.51cto.com/u_15015155/2554641 步骤 下载stunnel工具 download (笔者用的是windows的) 下载stunnel途中会进行本地证书的制作&#xff08;也可以用openssl自定义证书&#xff09;&#xff0c;如…

C++ 适配器

适配器 适配器是一种设计模式&#xff0c;我们最终实现的功能可以通过不同的路径来实现&#xff0c;那么这个路径就可以称作适配器。 例如下面的例子&#xff1a; 那么在c中也有适配器&#xff0c;例如stack、queue、priority_queue&#xff0c;它们并不是使用了什么新的内存…

【python爬虫】利用Python爬取天气数据,并做可视化分析

首先登录网站&#xff0c;查看网页内容及数据格式(使用代码查看内容)&#xff0c;选择两个城市及对应月份&#xff0c;爬取对应天气数据&#xff0c;进行数据预处理(如缺失值处理、数据类型转换、字符串截取等)&#xff0c;数据的初步探索性分析(如描述性统计、数据可视化查看数…