本文主要是介绍类的那些事(包含智能提示小图标,与对象的关系等),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
“类视图”和“对象浏览器”显示一些图标,这些图标表示代码实体,例如命名空间、类、函数和变量。下表以图文并茂的形式说明了这些图标。
图标 | 说明 | 图标 | 说明 |
---|---|---|---|
命名空间 | 方法或函数 | ||
类 | 运算符 | ||
接口 | 属性 | ||
结构 | 字段或变量 | ||
Union | Event | ||
Enum | 常量 | ||
TypeDef | 枚举项 | ||
模块 | 映射项 | ||
扩展方法 | 外部声明 | ||
委托 | 错误 | ||
异常 | 模板 | ||
映射 | 未知 | ||
类型转发 |
信号图标
以下信号图标适用于前面的所有图标,指示它们的可访问性。
说明 |
---|
如果项目包含在源代码管理数据库中,则可能会显示其他信号图标来指示源代码管理的状态,如签入或签出。 |
图标 | 说明 |
---|---|
<无信号图标> | 公共。可从该组件内的任何地方访问或从任何引用它的组件访问。 |
受保护。可从包含类或类型内访问或从由包含类或类型派生的类或类型内访问。 | |
私有。仅可在包含类或类型内访问。 | |
密封。 | |
朋友/内部。仅可以从此项目内访问。 | |
快捷方式。对象的快捷方式。 |
1.页面的C#代码(后台文件代码)一旦发生修改,需要手动重新编译(生成)一下,生成新的网站程序集(.dll),否则不会运行新代码
2.再次强调,无论是【网站】,还是【网站应用程序】,最终还是被编译成程序集使用的。也就是说,我们所谓的【动态页面】(aspx/ashx)都是网站程序集里的类而已。
Web应用程序每个页面类都会自动加上一个命名空间,而网站页面类不会。
server.mappath需要using什么命名空间
这样就可以用上了.
System.Web.HttpContext.Current.Server.MapPath()
在普通的CS文件中是不能直接用Server的,加命名空间也没有用,这能这么用,其他的request,response.cache.都是这样
using System;
using System.Xml;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Web.UI.Page.Server;
using DBUtility;
using Model;
using System.Web;
using System.Web.UI;
namespace SQLServerDAL
{
class photoshowDAL
{
public void WriteXml()
{
System.Web.HttpContext.Current.Server.MapPath()
}
}
}
执行语句: superUserInfo su1 = Session["userInfo"];
显式转换、隐式转换
目录
(强制的类型名)表达式
用于强行将“表达式”的值转换成“类型名”所表示的数据类型。例如,(int)4.2的结果是4;强制类型转换的目的是使表达式的值的数据类型发生改变,从而使不同类型数据之间的运算能够进行下去。
应用情况编辑
如果表达式仅是单个常量或变量,则常量或变量不必用圆括号括起来;但是如果是含有运算符的表达式,则必须利用括号将其统一,否则容易发生歧义。例如:
(float)(a+b)
(int)a+b
经强制类型转换后仅产生一个临时的、类型不同的数据继续参加运算,其常量、变量或表达式的原有类型以及原来数据值均不改变。例如:
int x;
(float)x;
此时x的值被强制转换位实型参与下一步的运算处理,但并不改变x类型的是整型。
由于类型转换将占用系统时间,过多的转换将降低程序的运行效率。再设计程序时应尽量选择好数据类型,以减少不必要的类型转换。
类体的定义包括成员变量的定义和方法的定义。
1、成员变量包括实例变量和类变量;而成员方法包括实例方法、类方法,当然还有一种特殊的构造方法。
2、类变量、类方法就是类中的变量、方法,必须是静态的,要加static;故其又称静态变量、静态方法。
3、成员变量、成员方法是对象或实例中的变量、方法,不加static;
类变量:静态域,静态字段,或叫静态变量,它属于该类所有实例共有的属性,在内存中只有一个地方存储这个变量。而且所有的实例都可以修改这个类变量的值(前提是这个类变量没有被final修饰,否则是常量了),而且访问类变量的时候不用实例,直接用类就可以了。
类方法:和类变量一样,可以不用实例,直接用类就可以调用类方法。
实例变量:实例域,实例字段,或叫成员变量。
实例方法:或叫成员方法,必须先有实例,然后才能通过实例调用该实例方法。
使用方法:类方法可以直接调用类变量和类方法
类方法不可以直接调用实例变量和实例方法
类方法中没有this,因为没有实例,this不知道调用哪个实例
类方法可以从类里面直接访问类成员
实例方法可以调用类方法,访问类变量,但是不提倡这样做,会把类方法和类变量混淆成实例方法和实例变量
程序实例:
class AnIntegerNamedX {
int x; //这个是成员变量
public int x() { //成员方法
return x;
}
public void setX(int newX) { //成员方法
x = newX;
}
}
public class Practice{
public static void main(String args[]){
AnIntegerNamedX myX = new AnIntegerNamedX();
AnIntegerNamedX anotherX = new AnIntegerNamedX();
myX.setX(1);
anotherX.x = 2;
System.out.println("myX.x = " + myX.x());
System.out.println("anotherX.x = " + anotherX.x());
}
}
2:
class AnIntegerNamedX {
static int x; //这里写成static,结果就变成全是2了,因为类变量是被实例所共享的,包括myX和anotherX
调用anotherX时所有的所有实例都改变了。
public int x() {
return x;
}
public void setX(int newX) {
x = newX;
}
}
public class Practice{
public static void main(String args[]){
AnIntegerNamedX myX = new AnIntegerNamedX();
AnIntegerNamedX anotherX = new AnIntegerNamedX();
myX.setX(1);
anotherX.x = 2; //这里把X的值改成2,所有实例的X都是2了,因为类变量是被所有实例共享的,任何实
例都可以对类变量做最终的修改
System.out.println("myX.x = " + myX.x());
System.out.println("anotherX.x = " + anotherX.x());
}
}
3:同样的,当把那两个方法都加上static变成类方法的时候,会提示错误让你把X变成静态,是应为类方法不能直接访问实例变量!
析构函数简介
以C++语言为例:[1] 析构函数名也应与类名相同,只是在函数名前面加一个位取反符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数(即使自定义了析构函数,编译器也总是会为我们合成一个析构函数,并且如果自定义了析构函数,编译器在执行时会先调用自定义的析构函数再调用合成的析构函数),它也不进行任何操作。所以许多简单的类中没有用显示的析构函数。
这篇关于类的那些事(包含智能提示小图标,与对象的关系等)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!