【C# Programming】类、构造器、静态成员
一、类
1、类的概念
- 类是现实世界概念的抽象:封装、继承、多态
- 数据成员: 类中存储数据的变量
- 成员方法: 类中操纵数据成员的函数称为成员方法
- 对象:类的实例
- 类定义
class X {…} var instance = new X(…);
2、实例字段
C#中,数据成员称为字段。与具体对象相关的字段称为实例字段;实例字段允许在声明时初始化,初始化语句在类构造函数前执行, 例如:
class Employee
{public string FirstName;public string LastName;public string Salary = "Not enough";public Employee() { Salray= string.Empty;}
}
实例字段只能从对象中访问,例如:
public static void Main()
{Employee employee1 = new Employee();Employee employee2;employee2 = new Employee();employee1.FirstName = "Inigo";employee1.LastName = "Montoya";employee1.Salary = "Too Little";IncreaseSalary(employee1);Console.WriteLine( "{0} {1}: {2}",employee1.FirstName, employee1.LastName,employee1.Salary);
}
static void IncreaseSalary(Employee employee)
{employee.Salary = "Enough to survive on";
}
C#中, 只能通过对象调用的成员方法称为实例方法。
在类的实例成员内部,可以使用this 获得调用实例成员的对象引用,例如:
class Employee
{public string FirstName;public string LastName;public string Salary;public string GetName(){return $"{ FirstName } { LastName }";}public void SetName(string newFirstName, string newLastName) {this.FirstName = newFirstName;this.LastName = newLastName;}
}
this关键字也能用来显式调用实例方法 或在方法调用中传递 ,例如:
class Employee
{public string FirstName;public string LastName;public string Salary;public string GetName() => $"{ FirstName } { LastName }";public void SetName(string newFirstName, string newLastName){this.FirstName = newFirstName;this.LastName = newLastName;Console.WriteLine( $"Name changed to '{ this.GetName() }'");}public void Save(){DataStorage.Store(this);}
}
class DataStorage
{// Save an employee object to a file named with the Employee name.public static void Store(Employee employee) { ...}
}
3、访问修饰符
访问修饰符标识了所修饰成员的封装级别。
- public:类或成员修饰符;表明类或成员可以从类外部访问
- private:成员修饰符; 表明修饰的成员仅在声明的类内部访问
- protected:成员修饰符; 表明修饰的成员仅在声明的类或派生类内部访问
- internal:类或成员修饰符;表明类或成员仅能在相同程序集内部访问
- Protected internal:类或成员修饰符;表明类或成员仅能在当前程序集内部或派生类访问
class Employee
{public string FirstName, LastName,Salary, Password;private bool IsAuthenticated;public bool Logon(string password) {if (Password == password)IsAuthenticated = true;return IsAuthenticated;}public bool GetIsAuthenticated() => IsAuthenticated;// ...
}
4、方法的参数
类型缺省访问级别:
Members of | Default member accessibility | Allowed declared accessibility of the member |
enum | public | None |
class | private | public protected internal private protected internal |
interface | public | None |
struct | private | public internal private |
5、属性
属性结合了字段和成员方法的特点。 对于对象的用户来说,属性似乎是一个字段,访问属性使用与访问字段 相同的语法。 对于类的实现者来说,属性是由 get 访问器和/或 set 访问器组成代码块。读取属性时,执行 get 访问器的代码块;向属性赋值时,执行 set 访问器的代码块。
不含 set 访问器的属性称为只读属性。 将不含 get 访问器的属性称为只写属性。同时具有以上两个访问器的属性称为读写属性。
与字段不同,属性不会被归类为变量。 因此,不能将属性作为 ref 或 out 参数传递。
6、自动实现属性
在 C# 3.0及更高版本,当属性访问器中不需要任何其他逻辑时,自动实现的属性会使属性声明更加简洁。在 C# 6和更高版本中,可以像字段一样初始化自动实现属性。
public static void Main()
{Employee employee1 = new Employee();Employee employee2 = new Employee();employee1.FirstName = "Inigo"; // Call the FirstName property's setter.System.Console.WriteLine(employee1.FirstName); // Call the FirstName property's getter.// Assign an auto-implemented propertyemployee2.Title = "Computer Nerd";employee1.Manager = employee2;// Print employee1's manager's title.System.Console.WriteLine(employee1.Manager.Title);
}
class Employee
{public string FirstName { get; set; }private string LastName { get; set; }public string Title { get; set; }public Employee Manager { get; set; }public string Salary { get; set; } = "Not Enough";
}
7、属性的访问限制
缺省情况下,get /set 访问器具有相同的可见性和访问级别。从C# 2.0开始,在属性实现中允许为get 或set 部分指定访问修饰符,从而覆盖为属性指定的访问修饰符
对属性 使用访问修饰符有以下限制:
- 不能对接口或显式实现的接口成员使用访问修饰符。
- 仅当属性同时包含 set 和 get 访问器时,才能使用访问器修饰符。 这种情况下,只允许对其中之一使用修饰符。
- 如果属性或索引器具有 override 修饰符,则访问器修饰符必须与重载的访问器的访问修饰符(如有)匹配。
- 访问器的可访问性级别必须比属性本身的可访问性级别具有更严格的限制。
class Employee
{public void Initialize(int id) => Id = id.ToString();public string Id{get { return _Id;}private set { // Providing an access modifier is possible in C# 2.0 and higher only_Id = value;}}private string _Id;
}
二、构造器
1、构造器
1.1 构造器是与类名相同,没有返回值的方法, 例如:
class Employee
{public Employee(string firstName, string lastName) // constructor{FirstName = firstName;LastName = lastName;}public string FirstName { get; set; }public string LastName { get; set; }public string Title {get; set}public string Salary { get; set; } = "Not Enough";public string Name{get{return FirstName + " " + LastName;}set{string[] names;names = value.Split(new char[] { ' ' });if (names.Length == 2){FirstName = names[0];LastName = names[1];}else{throw new System.ArgumentException(string.Format($"Assigned value '{ value }' is invalid", nameof(value)));}}}
}
1.2 调用构造器
public static void Main()
{Employee employee;employee = new Employee("Inigo", "Montoya");employee.Salary = "Too Little";Console.WriteLine( "{0} {1}: {2}", employee.FirstName, employee.LastName,employee.Salary);
}
1.3 默认构造器
如果类没有显式定义构造器,C# 编译器会在编译时自动添加一个不含任何参数的构造函数。一旦类显定义构造器,编译器就不会提供默认构造函数。
2、对象初始化器
初始化器用于初始化对象中所有可以访问的字段和属性。在调用构造器时,可以在后面的大括号中添加成员初始化列表,例如:
public static void Main()
{Employee employee = new Employee("Inigo", "Montoya"){Title = "Computer Nerd",Salary = "Not enough"};Console.WriteLine("{0} {1} ({2}): {3}", employee.FirstName, employee.LastName, employee.Title, employee.Salary);
}
3、构造器链
C# 中,允许从一个构造器中调用同一个类的另一个构造器, 方法是在一个冒号后添加this关键字,再添加被调用构造器的参数列表,例如:
class Employee
{public Employee(string firstName, string lastName){FirstName = firstName;LastName = lastName;}public Employee(int id, string firstName, string lastName): this(firstName, lastName){Id = id;}public Employee(int id){Id = id;// NOTE: Member constructors cannot be called explicitly inline// this(id, firstName, lastName);}public int Id { get; private set; }public string FirstName { get; set; }public string LastName { get; set; }public string Salary { get; set; } = "Not Enough";
}
4、匿名类型
匿名类型是编译器动态生成的类型,编译器遇到匿名类型时,会自动生成一个CIL类。该类具有与匿名类型声明中已经命名的值和数据类型对应的属性。例如:
public static void Main()
{var patent1 =new{Title = "Bifocals",YearOfPublication = "1784"}; var patent2 =new{Title = "Phonograph",YearOfPublication = "1877"}; var patent3 =new{patent1.Title,Year = patent1.YearOfPublication};System.Console.WriteLine("{0} ({1})",patent1.Title, patent1.YearOfPublication);System.Console.WriteLine("{0} ({1})", patent2.Title, patent1.YearOfPublication);Console.WriteLine();Console.WriteLine(patent1);Console.WriteLine(patent2);Console.WriteLine();Console.WriteLine(patent3);
}
三、静态成员
1、静态字段
在类的多个实例之间共享的字段,用static 关键字标识。和实例字段一样,静态字段也可以在声明时初始化。例如:
class Employee
{// ...public static int Id; // default(int): 0 public static int NextId = 42;// ...
}
和实例字段不一样,未初始化的静态字段将获得默认值,即 default(T)的结果
2、静态方法
和静态字段类似,静态方法也用static关键字标识。静态方法可以通过类名直接访问。例如:
public static void Main()
{DirectoryInfo directory = new DirectoryInfo(".\\Source");directory.MoveTo(".\\Root");DirectoryInfoExtension.CopyTo(directory, ".\\Target", SearchOption.AllDirectories, "*");
}
public static class DirectoryInfoExtension
{public static void CopyTo( DirectoryInfo sourceDirectory, string target, SearchOption option, string searchPattern) {if (target[target.Length - 1] != Path.DirectorySeparatorChar)target += Path.DirectorySeparatorChar;if (!Directory.Exists(target))Directory.CreateDirectory(target);for (int i = 0; i < searchPattern.Length; i++){foreach (string file in Directory.GetFiles(sourceDirectory.FullName, searchPattern)) {File.Copy(file, target + Path.GetFileName(file), true);}}if (option == SearchOption.AllDirectories) //Copy subdirectories (recursively){foreach (string element in Directory.GetDirectories(sourceDirectory.FullName))Copy(element, target + Path.GetFileName(element),searchPattern);}}private static void Copy(string element, string fileName, string searchPattern){Console.WriteLine("Copying " + fileName);}
}
3、静态构造器
静态构造器不显式调用,而是在运行时在首次访问类时自动调用。首次访问类发生在条用普通构造器时,也可能发生在访问类的静态方法或字段。静态构造器不允许带任何参数
class Employee
{static Employee(){Random randomGenerator = new Random();NextId = randomGenerator.Next(101, 999);}// ...public static int NextId = 42;// ...
}
4、静态属性
属性也能static。例如:
class Employee
{// ...public static int NextId{get{return _NextId;}private set{_NextId = value;}}public static int _NextId = 42;// ...
}
5、静态类
C#中也能定义静态类。静态类不含任何实例字段或方法。因此静态类不能实例化。编译器自动在CIL 代码中将静态类标记为abstract 和sealed。即将类指定为不可扩展
public static class SimpleMath
{public static int Max(params int[] numbers){if (numbers.Length == 0) // Check that there is at least one item in numbers.throw new ArgumentException( "numbers cannot be empty", nameof(numbers));int result = numbers[0]; foreach (int number in numbers){if (number > result)result = number;}return result;}
}
public class Program
{public static void Main(string[] args){int[] numbers = new int[args.Length];for (int count = 0; count < args.Length; count++)numbers[count] = args[count].Length;Console.WriteLine( $@"Longest argument length = { SimpleMath.Max(numbers) }");}
}
6、封装数据
6.1 const 字段
- const 字段是在编译时确定的值, 在运行时不会被改变。常量字段自动成为静态字段
- 如果一个程序集引用了另一个程序集中的常量,常量值将直接编译进引用的程序集中
class ConvertUnits
{public const float CentimersPerInch = 2.54F; public const int CupsPerGallon = 16;
}
6.2 readonly
readonly 修饰符只能用于字段(不能用于局部变量)。它指出字段值只能从构造器中更改或声明时通过初始化器更改。
class Employee
{public Employee(int id){_Id = id;}private readonly int _Id;public int Id{get { return _Id; }}// Error: A readonly field cannot be assigned to (excep in a constructor or a variable initializer)// public void SetId(int id) =>_Id = id;
}
7、分部类
分部类是一个类的多个部分, 这些部分可以合并成一个完整的类。分部类主要用于将一个类的定义划分到多个文件中。 C# 使用关键字partial来声明分部类
// File: Program1.cs
partial class Program
{
}
// File: Program2.cs
partial class Program
{
}
8、分部方法
分部方法存在于分部类中,它允许在一个文件中声明方法,而在另一文件中实现该方法。例如:
// File: Person.Designer.cs
public partial class Person
{#region Extensibility Method Definitionspartial void OnLastNameChanging(string value);partial void OnFirstNameChanging(string value);#endregion// ...
}
// File: Person.cs
partial class Person
{partial void OnLastNameChanging(string value){//...}partial void OnFirstNameChanging(string value){//...}
}
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
【C# Programming】类、构造器、静态成员
一、类 1、类的概念 类是现实世界概念的抽象:封装、继承、多态数据成员: 类中存储数据的变量成员方法: 类中操纵数据成员的函数称为成员方法对象:类的实例类定义 class X {…} var instance new X(…); 2、实例字段 C#中…...
![](https://www.ngui.cc/images/no-images.jpg)
软件层面缓存基本概念与分类
缓存 缓存基本概念(百度百科) 缓存(cache),原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快…...
![](https://img-blog.csdnimg.cn/af3cdfbeeef144558bb34800ad3d3ba2.png)
单片机有哪些分类?
单片机有哪些分类? 1.AVR单片机-----速度快,一个时钟周期执行一条指令,而普通的51单片机需要12个时钟周期执行一条指令。当然,Atmel公司出品的AT89LP系列单片机也是一个时钟执行一条指令,但目前还未普及。AVR单片机比51单片机多…...
![](https://img-blog.csdnimg.cn/e84bbe00ef174ae584aee5f0b021d7b6.jpeg)
高阶数据结构-----三种平衡树的实现以及原理(未完成)
TreeMap和TreeSet的底层实现原理就是红黑树 一)AVL树: 1)必须是一棵搜索树:前提是二叉树,任取一个节点,它的左孩子的Key小于父亲节点的Key小于右孩子节点的Key,中序遍历是有序的,按照Key的大小进行排列,高度平衡的二叉…...
![](https://img-blog.csdnimg.cn/de6b0c14610f486e98659d52b1212111.png)
北斗高精度组合导航终端
UWB(Ultra-Wideband)、卫星定位(GNSS),以及IMU(Inertial Measurement Unit)的组合定位系统结合了多种传感器和定位技术,以提供高精度、高可靠性的位置估计。这种组合定位系统在各种应…...
![](https://img-blog.csdnimg.cn/b1324661b0e84f4c80adb41f68fd9239.jpeg)
低代码平台是否能替代电子表格?
在计算机技术普及之前,会计、助理或者是销售人员,都需要用纸和笔来记录和维护每一笔交易。计算机技术兴起之后,一项技术发明——电子表格的出现改变了低效的状况。电子表格的第一个版本出现在1977年,一个名为“VisiCalc”的程序。…...
![](https://www.ngui.cc/images/no-images.jpg)
qt多个信号如何关联一并处理
主要方法: 首先,需要创建一个包含自定义信号和槽的Qt类。假设要创建一个名为MyObject的类,并在其中定义一个自定义信号和一个槽。这个类的头文件可能如下所示: #ifndef MYOBJECT_H #define MYOBJECT_H#include <QObject>c…...
![](https://img-blog.csdnimg.cn/474d70adad1149a898f3f27e012db0d9.png)
【python爬虫】12.建立你的爬虫大军
文章目录 前言协程是什么多协程的用法gevent库queue模块 拓展复习复习 前言 照旧来回顾上一关的知识点!上一关我们学习如何将爬虫的结果发送邮件,和定时执行爬虫。 关于邮件,它是这样一种流程: 我们要用到的模块是smtplib和emai…...
![](https://www.ngui.cc/images/no-images.jpg)
2023数学建模国赛C题思路--蔬菜类商品的自动定价与补货决策
C 题 蔬菜类商品的自动定价与补货决策 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就无法再售。因此,商超通常会根据各商品的历史销售和需 求情况每天进…...
![](https://www.ngui.cc/images/no-images.jpg)
vue2与vue3的使用区别
1. 脚手架创建项目的区别: vue2: vue init webpack “项目名称”vue3: vue create “项目名称” 或者vue3一般与vite结合使用: npm create vitelatest yarn create vite2. template中结构 vue2: template下只有一个元素节点 <template><div><div…...
![](https://img-blog.csdnimg.cn/a57d1040febb4ae782b717a6a512bac5.png)
Apache httpd漏洞复现
文章目录 未知后缀名解析漏洞多后缀名解析漏洞启动环境漏洞复现 换行解析漏洞启动环境漏洞复现 未知后缀名解析漏洞 该漏洞与Apache、php版本无关,属于用户配置不当造成的解析漏洞。在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP…...
![](https://img-blog.csdnimg.cn/c1d5a8b2a8544b64a46df0ae9c1b9359.png)
【漏洞复现】时空智友企业流程化管控系统文件上传
漏洞描述 通过时空智友该系统,可让企业实现流程的自动化、协同上提升、数据得洞察及决策得优化,来提高工作效率、管理水平及企业的竞争力。时空智友企业流程化 formservice接口处存有任意文件上传漏洞,未经认证得攻击者可利用此接口上传后门程序,可导致服务器失陷。 免责…...
![](https://img-blog.csdnimg.cn/14b5b3b9ddce43248a482b15e4c92513.png)
elasticsearch的DSL查询文档
DSL查询分类 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如: match_query multi_ma…...
![](https://img-blog.csdnimg.cn/01b797f285414a4fa8024f2d70b5a032.png)
IP地址、子网掩码、网络地址、广播地址、IP网段
文章目录 IP地址IP地址分类子网掩码网络地址广播地址IP网段 本文主要讨论iPv4地址。 IP地址 实际的 IP 地址是一串32 比特的数字,按照 8 比特(1 字节)为一组分成 4 组,分别用十进制表示然后再用圆点隔开,这就是我们平…...
![](https://img-blog.csdnimg.cn/9cb20aa0e8f74f1f8a6c73401c037b5d.png)
ffmpeg-android studio创建jni项目
一、创建native项目 1.1、选择Native C 1.2、命名项目名称 1.3、选择C标准 1.4、项目结构 1.5、app的build.gradle plugins {id com.android.application }android {compileSdk 32defaultConfig {applicationId "com.anniljing.ffmpegnative"minSdk 25targetSdk 32…...
![](https://img-blog.csdnimg.cn/4eef805d64b84ebb96320916eb8c28b2.png#pic_center)
智慧公厕是将数据、技术、业务深度融合的公共厕所敏捷化“操作系统”
文明社会的进步离不开公共设施的不断创新和提升。而在这些公共设施中,公共厕所一直是一个备受关注和改善的领域。近年来,随着智慧城市建设的推进,智慧公厕成为了城市管理的重要一环。智慧公厕不仅仅是为公众提供方便和舒适的便利设施…...
![](https://img-blog.csdnimg.cn/25d49de42513481b862fb9cf32ff0b7f.png)
JVM中JAVA对象和数组内存布局
对象 数组 在Java中,所有的对象都是一种特殊的数组,它们的元素可以是基本数据类型、其他对象引用或者其他任何类型。Java对象和数组的内存布局包含以下部分: 1.对象头(Object Header) 每个Java对象都有一个对象头&am…...
![](https://img-blog.csdnimg.cn/2ae6caeb2af64bff8e13a26ce57bfd45.png)
【2023年数学建模国赛】赛题发布
2023数学建模国赛赛题已经发布啦,距离赛题发布已经过去三个小时了,大家是否已经确定题目呢?学姐后续会持续更新赛题思路与代码~...
![](https://www.ngui.cc/images/no-images.jpg)
Java HashMap源码学习
Java HashMap源码学习 基本使用 包含创建,添加,删除,迭代,打印 val map java.util.HashMap<Int, Int>() map.put(1, 2) map.put(2, 2) map.put(3, 2) map.remove(1) map.forEach {println("it.key${it.key}, it.va…...
![](https://www.ngui.cc/images/no-images.jpg)
Gin中用于追踪用户的状态的方法?!!!
Gin中的Cookie和Session的用法 文章目录 Gin中的Cookie和Session的用法介绍Cookie代码演示 Session代码展示 介绍 cookie 和 session 是 Web 开发中常用的两种技术,主要用于跟踪用户的状态信息。 Cookie func (c *Context) Cookie(name string, value string, max…...
![](https://www.ngui.cc/images/no-images.jpg)
HTTP代理与HTTPS代理在工作流程上有哪些区别
HTTP代理和HTTPS代理都是常见的代理技术,可以实现隐藏客户端IP地址、突破网络封锁、加速网站访问、过滤网络内容等功能。本文将介绍HTTP代理和HTTPS代理在工作流程上的区别。 HTTP代理的工作流程 客户端向代理服务器发送HTTP请求 当客户端需要访问某个网站时&#x…...
![](https://img-blog.csdnimg.cn/58d25bd2d67d43f2ab37c7752ea00a5a.png#pic_center)
Docker从认识到实践再到底层原理(二-2)|Namespace+cgroups
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…...
![](https://www.ngui.cc/images/no-images.jpg)
算法的概述
算法分析: 解决同一问题的算法可以有多种。 我们希望从中选出最优的算法,效率高或者存储空间小。为此,需要对算法进行评估,分析。 通常考虑两个度量: 1、 时间复杂度:算法运行时需要的总步数,…...
![](https://img-blog.csdnimg.cn/e09d8f582f4c456f87accb78760184d5.png#pic_center)
菜鸟教程《Python 3 教程》笔记(19):错误与异常
菜鸟教程《Python 3 教程》笔记(19) 19 错误和异常19.1 assert(断言)19.2 异常处理19.2.1 try/except19.2.2 try/except...else19.2.3 try-finally 语句 19.3 抛出异常19.4 用户自定义异常19.5 清理行为19.5.1 定义清理行为19.5.2…...
![](https://img-blog.csdnimg.cn/be9ad8bdfea3458f83341bb30a750baa.png)
空气净化器上亚马逊美国站需要办理什么认证?空气净化器UL867测试报告如何办理?
空气净化器又称“空气清洁器”、空气清新机、净化器,是指能够吸附、分解或转化各种空气污染物(一般包括PM2.5、粉尘、花粉、异味、甲醛之类的装修污染、细菌、过敏原等),有效提高空气清洁度的产品,主要分为家用 、商用…...
![](https://www.ngui.cc/images/no-images.jpg)
SpringBoot的测试方案
写完代码后,测试是必不可少的步骤,现在来介绍一下基于SpringBoot的测试方法。 基于SpringBoot框架写完相应功能的Controller之后,然后就可以测试功能是否正常,本博客列举MockMvc和RestTemplate两种方式来测试。 准备代码 实体类…...
![](https://www.ngui.cc/images/no-images.jpg)
华为OD机考算法题:字符串解密
目录 题目部分 解读与分析 代码实现 题目部分 题目字符串解密题目说明给定两个字符串string1和string2。 string1是一个被加扰的字符串。string1由小写英文字母(a~z)和数字字符(0~9)组成,而加扰字符串由0~9、a~f 组…...
![](https://img-blog.csdnimg.cn/5efab64d9a63488eb93a302ac415a15b.png)
unity 锚点设置
锚点聚合情况: 一个2d物体的位置 pos x pos y 是中心点相对于锚点的偏移量: 中心点就是位置。 按住shift 锚点和中心点都会被设置: 按住Alt: 同时按住shift和alt : 中心点 锚点 UI元素在对应的位置上。 锚点拉伸情况…...
![](https://img-blog.csdnimg.cn/d7c8cf3c3dca4b01a39bcc0d1d52801a.png)
Hadoop:HDFS--分布式文件存储系统
目录 HDFS的基础架构 VMware虚拟机部署HDFS集群 HDFS集群启停命令 HDFS Shell操作 hadoop 命令体系: 创建文件夹 -mkdir 查看目录内容 -ls 上传文件到hdfs -put 查看HDFS文件内容 -cat 下载HDFS文件 -get 复制HDFS文件 -cp 追加数据到HDFS文件中 -appendTo…...
![](https://img-blog.csdnimg.cn/03609ccbc954484395a4c7f35f1950d6.png)
自定义封装异步任务组件,实现FutureTask功能
FutureTask 在 JDK1.8 后的异步编排API中的CompletableFuture,提供了 异步任务的成功回调、异常回调。 public class FutureTaskTest {public static void main(String[] args) throws Exception {CompletableFuture<String> future CompletableFuture.sup…...
![](http://img3m1.ddimg.cn/5/27/20021171-1_w_13.jpg)
网站为什么要seo?/今日头条权重查询
网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击“普通下载”)购买正版 封页 编辑推荐 请关注Head First系列其他新书 ★荣获…...
![](/images/no-images.jpg)
网站建设百度小程序/赵阳竞价培训
由于公司的业务需要,要实现PhoneGAP文件上传并显示进度条。一开始没有仔细看PhoneGAP API就草草开工,后来通过logcat才发现,上传过程中居然有动态刷新上传的字节数据。顿时泪奔,我手动实现的上传进度监听啊,不过既然写…...
![](/images/no-images.jpg)
手机上怎么注销营业执照/seo快速排名系统
文章目录练习7.1练习7.2练习7.3练习7.4练习7.5练习7.6练习7.7练习7.8练习7.9练习7.10练习7.1 使用2.6.1节定义的Sales_data类为1.6节的交易处理程序编写一个新版本。 #include <iostream> #include <string> using std::cin; using std::cout; using std::endl; us…...
![](http://hiphotos.baidu.com/see7di/pic/item/12094aee8dd9128fb3fb95a3.jpg)
wordpress 判断置顶/百度关键字
/*/调用方法: Pop(this,{ pos:3,//上;右;下;左 tim:3000, oft:{x:10,y:0}, htm:这是需要显示的内容<br>HTML5入门之新标签的解析,//可以为fun fun:function(i){} }); Pop(); /*/ 核心代码 var Popfunction(i,opt){ var $Pop,$Hand; if(!i || !opt){Function.attempt(func…...
![](/images/no-images.jpg)
用凡科建设的网站安全吗/全渠道营销管理平台
我有一个tiff图片存储在内存中(在javascript变量中).在浏览器窗口中显示此图像的javascript或html技术是什么?是否有“ drawimage”类型的功能?解决方法:本地浏览器对tiff文件的支持仍然很糟糕.Wikipedia很好地概述了Image format support浏览器.话虽如此…...
![](https://s1.51cto.com/images/blog/201811/30/f3226f025fdb5a2b02e0a5ed47696e8f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
商丘网站制作案例/互动营销
简介:本文主要目的是把现今主流的Dubbo框架项目和精准测试进行对接,通过精准测试的数据穿透、数据采集、测试用例与代码的双向追溯、数据分析等一系列精准测试的特有功能达到对项目质量的保证。 本次环境搭建分为基础环境准备、Dubbo环境搭建、精准测试…...