Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Cấu trúc
Static
Objectives
Slide 3
Instance field
Static field
Static field access
Meaning of static field
Static field initialization
Static field default values
Static variable initializer
Static constructor
Invocation of static constructor
Initialization application
Static method
Static method invocation
Static method application
Summary
Nội dung
Static
2
Objectives
•
Introduce static keyword
–
examine syntax
–
describe common uses
3
Static
•
Static represents something which is part of a type
–
rather than part of an object
•
Two uses of static
–
field
–
method
4
Instance field
•
Each object gets own copy of instance fields
class Item
{
public int Id;
public int Price;
public int Revenue;
}
instance fields
Item a = new Item();
Item b = new Item();
Item c = new Item();
instances
Id
Price
Revenue
Id
Price
Revenue
Id
Price
Revenue
a
b
c
5
Static field
•
Only on copy of static field
–
created using keyword static
–
available even if no instances exist
–
also called static variable
class Item
{
public int Id;
public int Price;
public static int Revenue;
}
static field
instance fields
Item a = new Item();
Item b = new Item();
Item c = new Item();
instances
Revenue
Id
Price
Id
Price
Id
Price
a
b
c
6
Static field access
•
Static field must be accessed through type name
–
compiler error to attempt access through instance
Revenue 5
Item.Revenue = 5;
access using
class name
7
Meaning of static field
•
Static field used to model shared resource
–
roughly analogous to global variable in other languages
Revenue
Id
Price
Id
Price
Id
Price
a
b
c
shared by all items
8
Static field initialization
•
Three options for initialization of static fields
–
default value
–
static variable initializer
–
static constructor
9
Static field default values
•
Static fields set to default value
–
0 for numeric types
–
false for bool
–
'\x0000' for char
–
null for references
class Item
{
public static int Revenue;
}
defaults to 0
Revenue 0
10
Static variable initializer
•
Can initialize static field in definition
–
called static variable initializer
–
initializer executed once
–
executed in textual order
•
Assigned value is limited
–
can be literal, new statement, or return of static method call
–
cannot call regular method
class Item
{
public static int Revenue = -1;
}
initialize
Revenue -1
[...]... 13 Static method • Method can be static – can only access static members – cannot directly access non -static members – no this object associated with call class Item { private static int revenue; public static void ResetRevenue() { revenue = 0; } static method } 14 Static method invocation • Static method must be called through type name – compile time error to attempt call through instance call static. . .Static constructor • May supply static constructor to do initialization – syntax is same name as type with keyword static – only one allowed – no parameters – no access modifier – can only access other static members class Item { public static int Revenue; static constructor static Item() { Revenue = -1; } } 11 Invocation of static constructor • • Static constructor invoked... Item.ResetRevenue(); 15 Static method application • Static methods often useful – for utility methods because global methods are not allowed – for methods for which an instance is not needed public class Math { public static double Sqrt(double d) public static double Sin (double a) public static double Log (double d) } public class Console { public static void WriteLine(string value) public static string... guarantees given – after static variable initializers – before any instances are created – before any static variables of that class are used – at most once 12 Initialization application • Instance and static initialization often used in same class pool shared by all Items instance gets a connection class Item { private static ConnectionPool pool; private Connection connection; static Item() { pool =... public static string ReadLine () } 16 Summary • • • Static represents things associated with a type – rather than a particular instance of the type – must be accessed through type name Static uses – variables used to model shared resource – methods useful when instance not needed in call Several options for initialization – default values – inline – static constructor 17 . items
8
Static field initialization
•
Three options for initialization of static fields
–
default value
–
static variable initializer
–
static constructor
9
Static. access other static members
class Item
{
public static int Revenue;
static Item()
{
Revenue = -1;
}
}
static constructor
12
Invocation of static constructor
•
Static