C#中??和?分别是什么意思?
在C#中??和?分别是什么意思?
1. 可空类型修饰符(?):
引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。
例如:string str=null; 是正确的,int i=null; 编译器就会报错。
为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?"
例如:int? 表示可空的整形,DateTime? 表示可为空的时间。
T? 其实是System.Nullable(泛型结构)的缩写形式,也就意味着当你用到T?时编译器编译 时会把T?编译成System.Nullable的形式。
例如:int?,编译后便是System.Nullable的形式。
2. 三元(运算符)表达式(?:):
例如:x?y:z 表示如果表达式x为true,则返回y;如果x为false,则返回z,是省略if{}else{}的简单形式。
3. 空合并运算符(??):
用于定义可空类型和引用类型的默认值。如果此运算符的左操作数不为null,则此运算符将返回左操作数,否则返回右操作数。
例如:a??b 当a为null时则返回b,a不为null时则返回a本身。
空合并运算符为右结合运算符,即操作时从右向左进行组合的。如,“a??b??c”的形式按“a??(b??c)”计算。
在ASP.NET开发中一些单词的标准缩写
有些词可能共用一些缩写。带星号的缩写或词来源于PeopleSoft标准。
The following standard word abbreviations should be used in naming records, fields, and SQRs:
Word(s) | Abbreviation | Description |
Abbreviate Abbreviation |
ABRV | |
Academic | ACAD | |
Accept Acceptance Accepted |
ACPT | |
Access | ACCS | |
Accident | ACDNT | |
Accomplish Accomplishment Accomplishments |
ACMP | |
Account* | ACCT* | |
Accounting* | ACCTG* | |
Accounts Payable Advanced Placement |
AP | |
Accounts Receivable | AR | |
Accredited | ACRD | |
Accrual | ACRL | |
Accumulated* | ACCUM* | |
Accumulation Accumulative |
ACUM | |
Achieve Achievement |
ACHV | |
Acquisition* | ACQ* | |
Act Active Activity American College Test |
ACT | |
Action* | ACTN* | |
Actual | ACTL | |
Add Added |
ADD | |
Additional* | ADDL* | |
Address* | ADDR* | Narrative data which describes a person, place or thing's location |
Ad hoc | ADHC | |
Adjudicate Adjudicated Adjudication |
ADJD | |
Adjusted Gross Income | AGI | |
Adjustment* | ADJ* | |
Administered Administrated Administration |
ADM | |
Admissible Admission |
ADMS | |
Admittance Admitted |
ADMT | |
Advanced Placement Accounts Payable |
AP | |
Advice | ADVC | |
Affiliation | AFFL | |
After | AFT | |
Age | AGE | |
Agency | AGCY | |
Agent | AGNT | |
Aid | AID | |
Alien | ALN | |
All | ALL | |
Allocate Allocation* |
ALLOC* | |
Alpha | ALPH | |
Alter Alternate |
ALT | |
Alumni Alumnus |
ALMN | |
AM | AM | "Ante Meridiem" (morning) |
American College Test Act Active Activity |
ACT | |
Amount* | AMT* | Monetary value(s) |
Analysis | ANLS | |
Annual* | ANNL* | |
Anonymous | ANON | |
Answer | ANS | |
Apartment | APT | |
Appeal Appealed |
APEL | |
Applicant* | APP* | |
Application* | APPL* | |
Appointment | APPT | |
Approval Approve |
APRV | |
Area | AREA | |
Array | ARAY | |
Arrears | ARRS | |
Ascending | ASC | |
Assign Assigned Assignment |
ASGN | |
Association | ASSC | |
Assumption | ASMP | |
Athlete Athletic |
ATHL | |
Attach | ATCH | |
Attempt | ATMPT | |
Attend Attendance |
ATND | |
Attention | ATTN | |
Attribute | ATTR | |
Audit Audited |
ADT | |
Authority Authorize |
AUTH | |
Auxiliary | AUX | |
Availability Available |
AVL | |
Average | AVG | The mean of two or more numbers |
Average Cumulative Grade | ACG | |
Award Awarded |
AWRD | |
Balance* | BAL* | The net value (balance) of an account |
Bank | BNK | |
Bargain | BARG | |
Base Basic |
BAS | |
Batch | BTCH | |
Before | BEF | |
Begin Beginning |
BEGN | |
Beginning of Term | BOT | |
Benefits | BEN | |
Bid | BID | |
Bill Billing |
BILL | |
Billing and Receivables System | BRS | |
Birth | BRTH | |
Board | BRD | |
Break | BRK | |
Budget Budgetable |
BUD | |
Budget Balance Account | BBA | |
Build Building |
BLD | |
Business | BUS | |
Business Unit* | BU* | |
Buy Buyer |
BUY | |
Calculate Calculated Calculation* |
CALC* | |
Calendar* | CAL* | |
Call | CALL | |
Campaign | CMPN | |
Campus | CMPS | |
Cancel Canceled |
CAN | |
Capacity | CAP | |
Capitalization | CPLZ | |
Card | CRD | |
Career | CAR | |
Carrier | CRIR | |
Cartridge | CART | |
Case | CSE | |
Cash | CSH | |
Catalog | CTLG | |
Category* | CATG* | |
Census | CENS | |
Center | CTR | |
Certificate Certification |
CERT | |
Change Changed |
CHG | |
Chapter | CHAP | |
Charge | CRG | |
Chartfield | CHARTF | |
Check Checked |
CHK | |
Citizen Citizenship |
CTZN | |
City | CTY | |
Class | CLAS | |
Clear Cleared |
CLR | |
CLEP | CLEP | |
Close | CLO | |
Club | CLB | |
COBRA* | CBR* | |
Code* | CD* | Data which represents encoded values (translate or code table) |
Collect Collection |
CLCT | |
College | COLG | |
Column | CLMN | |
Combination Combine |
COMB | |
Command | CMD | |
Comment | CMT | An explanatory, illustrative or critical note, remark or observation |
Committee | CMMTTEE | |
Company* | CO* | |
Comparative* | COMPA* | |
Competitor | CPTR | |
Complete Completion Compliance |
CMPL | |
Component | CMPT | When the meaning is "part", use abbreviation "PRT". |
Composite Compensation |
COMP | |
Conditional | COND | |
Confidential | CNFD | |
Confirm Confirmation* |
CONF* | |
Constant | CNST CST |
Data which is unchanging or invariable |
Contact | CTCT | |
Continue Continuing Continuous |
CONT | |
Contract Contractor |
CNTR | |
Control* | CNTL* | |
Conversation* | CONVR* | |
Conversion* Convert* Converted |
CNV* | |
Correspondence | CRSP | |
Cost | COST | |
Count Counter |
CNT | A number of people or things that have been "counted", such as inventory cycle count |
Country | CTRY | |
County | CNTY | |
Course* | CRSE* | |
Coverage* | COVRG* | |
Create | CRE | |
Credential | CRDL | |
Credit* | CR* CRDT |
Use "CR" for field names relating to financial data Use "CRDT" for field names relating to academic work |
CREF | CREF | |
Cross | CRS | |
Cross List Cross Listed |
XLST | |
Cross Reference | XREF | |
Cumulative | CUM | |
Currency* | CURR* | |
Current* | CUR* | |
Cursor | CRSR | |
Custodian | CSTN | |
Customer* | CUST* | |
Daily | DLY | |
Data | DATA | |
Data Processing | DP | |
Date* | DT* | A calendar day, month, and year (including century) |
Date-Time Stamp | DTTM | |
Day* | DD* DY* |
A day of the week (Sunday, Monday, etc.) |
Dead Death Deceased |
DEAD | |
Debit* | DR* | |
Decimal | DEC | |
Deduct Deduction* |
DED* | |
Default* | DFLT* | |
Deficit | DFCT | |
Definition* | DEFN* | |
Degree | DEG | |
Delete | DEL | |
Deliver Delivery |
DLVR | |
Demo | DMO | |
Dental | DNTL | |
Department* | DEPT* | |
Department of Motor Vehicles | DMV | |
Dependency Dependent* Depends |
DEP* | |
Deposit | DPST | |
Depreciation* | DEPR* | |
Description* | DESCR* DSC |
Narrative data which translates a code or number. When a suffix, use "_DSC" (see Standard Field Name Suffix table). |
Design | DSGN | |
Destination* | DEST* | |
Detail* | DETL* | |
Develop Development Deviation |
DEV | |
Difference Differential |
DIFF | |
Digit | DGT | |
Direct Direction Directional |
DIR | |
Disability Disabled |
DISA | |
Disbursed Disbursement |
DSB | |
Discount* | DISC* | |
Displacement | DSPL | |
Display | DISP | |
Disposition | DSP | |
Distribute Distribution* |
DIST* | |
District | DSTR | |
Division | DIV | |
Division of Continuing Education | DCE | |
Document | DOC | |
Donor | DONR | |
Down | DN | |
Drive Driver |
DRV | |
Drop | DRP | |
Due | DUE | |
Duplicate* Duplication |
DUP* | |
Each | EA | |
Early | ERLY | |
Earn Earned Earnings* |
EARN* | |
Earned Income Credit | EIC | |
Educate Education |
EDU | |
Effect Effective* |
EFF* | |
Effective Date* | EFFDT* | |
Effective Date Sequence* | EFFSEQ* | |
Effort | EFRT | |
Elect Elected Elective |
ELCT | |
Electronic Data Interchange | EDI | |
Electronic Funds Transfer | EFT | |
Electronic Mail | EM | |
Eligibility* Eligible |
ELIG* | |
Emergency | EMRG | |
Emphasis | EMPH | |
Employee* | EE* EMPL |
|
Employee ID* | EMPLID* | |
Employer* | ER* | |
Employment | EMPLMT | |
Encumber Encumbrance |
ENCB | |
End Ending |
END | |
End of Term | EOT | |
Endorse Endorsement |
ENDR | |
Endorsement | ENDR | |
Endow Endowment |
ENDW | |
Engineer Engineering |
ENGN | |
English | ENGL | |
Enrichment | ENRCH | |
Enrollment | ENRL | |
Enter Entered Entry |
ENTR | |
Entitle Entitlement |
ENTL | |
Equal Equality Equivalence Equivalent |
EQ | |
Equal Employment Opportunity Equal Opportunity |
EEO | |
Equip | EQP | |
Error | ERR | |
Establishment | ESTB | |
Ethnic | ETHN | |
Evaluation Evaluator |
EVAL | |
Event | EVNT | |
Exam | EXM | |
Exception | EXCP | |
Exclude Exclusion |
EXCL | |
Execute Execution |
EXEC | |
Exempt Exemption |
EXMT | |
Expect Expected |
EXPC | |
Expected Family Contribution | EFC | |
Expedite | XPDT | |
Expense Export Express |
EXP | |
Experimental | EXPM | |
Expiration Expire |
EXPR | |
Export Expense |
EXP | |
Extend Extended Extension |
EXT | |
External | EXTR | |
Facility | FCLT | |
Faculty | FAC | |
Family | FMLY | |
Family Eduaction Rights and Privacy Act | FERPA | |
Fast | FST | |
Father | FATH | |
Federal | FED | |
Federal Labor and Security Act | FLSA | |
Fee | FEE | |
Feet Full Time |
FT | |
FICA | FICA | |
Field Fields |
FLD | |
File | FILE | |
Final | FNL | |
Financial* | FIN* | |
Financial Aid | FA | |
Fine | FINE | |
First | FRST | |
Fiscal | FISC | |
Fiscal Year | FY | |
Fiscal Year to Date | FYTD | |
Fix Fixed |
FIX | |
Flag | FLG SW |
Data which functions as a flag or indicator. Used with only two possible states/conditions. Data should normally be "Y" or "N". |
Flexible Spending Account | FSA | |
Floor | FLR | |
For | FOR | |
Foreign | FGN | |
Foreign Key | FK | |
Form | FRM | |
Format | FMT | |
Former | FORMR | |
Free | FREE | |
Free Application for Federal Student Aid | FAFSA | |
Free on Board | FOB | |
Freeze Frozen |
FRZ | |
Frequency* | FREQ* | |
Fresh Freshman |
FRSH | |
From | FR | |
Fulfill Fulfilled |
FULF | |
Full Time | FT | |
Full Time Equivalent | FTE | |
Function Functional |
FCN | |
Fund Funding |
FUND | |
Future | FUT | |
Garnishment* | GARN* | |
General | GENL | |
General Education Degree | GED | |
General Ledger | GL | |
Geographic Geography |
GEOG | |
Gift | GFT | |
Global | GLBL | |
Government | GOVT | |
Grade | GDE GRD |
A value assigned to reflect performance or position on a scale |
Grade Point Average | GPA | |
Graduate | GRAD | |
Grant Granted |
GRNT | |
Gross | GROS | |
Group | GRP | |
Guarantee | GUAR | |
Guaranteed Student Loan | GSL | |
Guest | GST | |
Handicap Handicapped |
HAND | |
Head | HEAD | |
Header* | HDR* | |
Health | HLTH | |
Held Hold |
HLD | |
Help | HLP | |
Hierarchy | HIER | |
High | H | Normally used in conjunction with another word (i.e., High School abbreviated as "HS"). |
High School | HS | |
High School Services | HSS | |
Higher Education | HED | |
Highway | HWAY | |
Hire | HIRE | |
History | HST | |
Home | HM | |
Honor | HONR | |
Honor Society | HSC | |
Hospital | HOSP | |
Hour | HH | A duration of time expressed in hours |
Hourly | HRLY | |
Hours* | HRS* | |
House Housing |
HSE | |
How | HOW | |
Human Resources | HR | |
Human Resource System | HRS | |
Identification Identifier* Indicator |
ID* | Alphanumeric data which identifies a person, place, or thing |
Image | IMG | |
Immune Immunization |
IMUN | |
Impact | IMPC | |
Implementation | IMPL | |
Import | IMP | |
Import/Export | IMPEXP | |
Inch | IN | |
Include | INCL | |
Income | INCM | |
Increase Increment |
INCR | |
Index | INDX | |
Indicator | ID IND |
|
Individual | INDV | |
Individual Student Information Report | ISIR | |
Information | INFO | |
Initial Initialize |
INIT | |
Injury* | INJ* | |
Inoculation | INOC | |
Input | INPT | |
Inquiry | INQ | |
Insert | ISRT | |
Institution | INST | |
Instruction Instructional Instructor |
ISTR | |
Instructional Need Analysis System | INAS | |
Insurance | INS | |
Inter-Unit* | IU* | |
Interest | INT | |
Interface* | INTFC* | |
Internal | INTR | |
International | INTL | |
Interval | INVL | |
Interview Interviewer |
INTV | |
Invent | INVN | |
Inventory | INV | |
Investment* | INVEST* | |
Invitation Invite |
INVT | |
Invoice | INVC | |
Issue Issued |
ISS | |
Item | ITM | |
Job | JOB | |
Journal* | JRNL* | |
Junior | JR | |
Junior Science | JS | |
Key | KEY | |
Label | LBL | |
Labor | LBR | |
Laboratory | LAB | |
Language | LNG | |
Last List |
LST | |
Late | LATE | |
Latitude | LAT | |
Layoff | LAYF | |
Leave | LV | |
Lecture | LCTR | |
Ledger* | LED* | |
Legal | LGL | |
Lender | LNDR | |
Length* | LEN* | |
Letter | LTR | |
Level | LVL | |
Liaison | LISN | |
Liberal Education | LBD | |
Library | LIB | |
License | LIC | |
License Plate Number | LIC_PLTE_NBR | |
Life | LIFE | |
Limit* | LIM* | |
Line* Loan |
LN* | |
Link Linked |
LNK | |
Liquid | LIQ | |
List Last |
LST | |
Literal | LTRL | |
Load | LOAD | |
Loan Line* |
LN | |
Locate Location* |
LOC* | |
Lock | LK | |
Locker | LKR | |
Log | LOG | |
Log on | LOGON | |
Long Longest |
LONG | |
Long Term Care | LTC | |
Long Term Disability | LTD | |
Longitude | LON | |
Lot | LOT | |
Low | LOW | |
Mail Mailer Mailing |
||
Maintenance* | MAINT* | |
Major | MJR | |
Make | MK | |
Manager | MGR | |
Map | MAP | |
Marital | MRTL | |
Message Agent Server | MAS | |
Mask | MSK | |
Master Academic Records System | MARS | |
Match Matching |
MTCH | |
Math | MTH | |
Matriculated Matriculation |
MTRC | |
Maximum* | MAX* | |
Medical Medicinal |
MED | |
Meet Meeting |
MT | |
Member | MBR | |
Membership | MSHP | |
Memo Memorandum |
MMO | |
Memorial | MEMR | |
Merchandise | MERCHNDS | |
Merchant | MERCH | |
Merit | MERT | |
Message Messages* |
MSG* | |
Meter | MTR | |
Method | METH | |
Microfilm | MFILM | |
Middle | MID | |
Military | MIL | |
Minimum* | MIN* | |
Minor | MINR | |
Minute | MNT MM |
A duration of time expressed in minutes |
Miscellaneous | MISC | |
Mode | MDE | |
Modification Modifier |
MOD | |
Monetary Money |
MONY | |
Month* | MM* MN* |
A calendar month in numeric form (e.g., 01=January) |
Month-to-Date* | MTD* | |
More | MORE | |
Mother | MOTH | |
Move | MOVE | |
Multiple | MULT | |
Name | NM NME |
Word(s) by which a person, place or thing is commonly known |
National | NATL | |
National Association of College and University Business Officers | NACUBO | |
National Student Loan Direct System | NSLDS | Commonly known as the "Perkins Loan" |
Navigation | NAV | |
New | NEW | |
Next | NXT | |
Next of Kin | NOK | |
No Charge | NC | |
No Credit | NOCR | |
No Print | NPRT | |
Nominal | NOM | |
Non | NON | |
Non-Personal Services | NPS | |
Not | NOT | |
Not Applicable | NA | |
Note Notice Notification Notify |
NOTE | |
Number* Numeric |
NBR* | Numeric data which identifies a person, place, or thing |
Object Objective |
OBJ | |
Occupation | OCP | |
Occurs | OCC | |
Offer Offered |
OFFR | |
Office | OFFC | |
Officer | OFCR | |
Official | OFCL | |
Old | OLD | |
Online | ONLN | |
Open | OPN | |
Operator* | OPR* | |
Option Optional Options |
OPT | |
Order | ORDR | |
Organization Organize |
ORG | |
Orientation | ORNT | |
Origin Original Origination |
ORIG | |
Other | OTHR | |
Out | OUT | |
Over | OVR | |
Overhead | OH | |
Override | OVRD | |
Overtime | OT | |
Own Owned |
OWN | |
Owner | OWNR | |
Packaged | PACK | |
Paid | PAID | |
Paper | PPR | |
Parameter* | PARM* | |
Parent | PAR | |
Parity Priority |
PRTY | |
Park | PRK | |
Part Partial |
PRT | |
Part Time | PT | |
Participation | PRTP | |
Pass Passed |
PASS | |
Past | PAST | |
Patron | PTRN | |
Pay Payable Payment |
PAY | |
Payroll | PYRL | |
Pedestrian | PED | |
Pell (Pell Grant) | PEL | |
Pending | PEND | |
Pension | PENS | |
Percent* Percentage Percentile |
PCT* | Part of a whole expressed in hundredths |
Period* | PD* | |
Period-to-Date* | PTD* | |
Perkins Loan | NSLDS | Common name for National Student Loan Direct System |
Permanent | PERM | |
Permit | PRMT | |
Person | PERS | |
Personal Personnel |
PSNL | |
Personal Identification | PIN | |
Personnel Action Notification | PAN | |
Phone | PHN | |
Physics | PHYS | |
Place | PLCE | |
Plan | PLN | |
Plate | PLTE | |
Pledge | PLDG | |
PM | PM | "Post Meridiem" (afternoon) |
Point | PNT | |
Policy | PLCY | |
Position* | POSN* | |
Post Posted |
POST | |
Postal | PSTL | |
Potential | POTN | |
Predicted | PRED | |
Preference Preferred |
PREF | |
Prefix | PRFX | |
Premium | PREM | |
Prerequisite | PREQ | |
Prescribed | PSCR | |
Presentation | PRST | |
President | PRES | |
Previous Prior |
PREV | |
Price | PRC | |
Price Level | PL | |
Primary | PRIM | |
Primary Key | PK | |
Principal Principle |
PRIN | |
Principal Investigator | PI | |
Print Printed |
PRN | |
Prior Previous |
PREV | |
Priority Parity |
PRTY | |
Probation Problem |
PROB | |
Procedure Process |
PROC | |
Profession Professional |
PRFS | |
Proficiency | PRFC | |
Profile* | PROF* | |
Program | PROG | |
Project Projected |
PROJ | |
Promissory | PRMS | |
Promotion | PROM | |
Proposal | PRPS | |
Prospect | PRSP | |
Province | PRVN | |
Purchase | PUR | |
Purchase Order | PO | |
Purge | PRG | |
Purpose | PURP | |
Qualitative Quality |
QAL | |
Quantitative Quantity* |
QTY* | A number of things other than money |
Quantity-to-Date Quarter-to-Date* |
QTD* | |
Quarter | QTR | |
Question | QSTN | |
Race | RACE | |
Range | RNG | |
Rank | RNK | Relative standing or position |
Rate* | RT* | Numeric value expressing amount per some unit of coverage |
Read Reading |
READ | |
Real Reallocation |
REAL | |
Reason* | RSN* | |
Recall | RCL | |
Receipt | RCPT | |
Receive Received* |
RECV* | |
Receiver | RCVR | |
Recharge | RCHG | |
Recognition Recognize |
RECG | |
Recommend | RCMD | |
Reconciliation* | RECON* | |
Record* | REC* | |
Recreate Recreation |
RECR | |
Recruit Recruiting |
RCRT | |
Reduce Reduced Reduction* |
RED* | |
Refer Reference* Referral Referred |
REF* | |
Refund | RFND | |
Regional | RGNL | |
Registrar | REGR | |
Registration | REG | |
Reject Rejection |
RJCT | |
Relate Relation Relationship |
RLAT | |
Release | RLSE | |
Religion Religious |
RELG | |
Remaining | RMNG | |
Reminder | RMDR | |
Renewal | RNWL | |
Repeat Repeatable Repeated |
REPT | |
Replace Replaced |
REPL | |
Reply | RPLY | |
Report* | RPT* | |
Request* Requested Require Required* Requisition* |
REQ* | |
Requirements* | RQMT* | |
Research | RES | |
Reserve Reserved |
RSRV | |
Reserve Officers Training Corps | ROTC | |
Residence Residency Resident |
RSDT | |
Resign | RSGN | |
Resource | RSRC | |
Response | RESP | |
Restart | RST | |
Restock | RSTK | |
Restrict Restricted Restrictions |
RSTR | |
Result | RSLT | |
Retire* Retirement* |
RET* | |
Retroactive | RETR | |
Return | RTN | |
Revenue | REV | |
Review | RVW | |
Revision | REVS | |
Revoke | REVK | |
Roll | RL | |
Roll up | RLUP | |
Room | RM | |
Route | ROUT | |
Row | ROW | |
RSVP | RSVP | French abbreviation meaning "please reply" |
Run | RUN | |
Run Control | RUNCTL | |
Salary* | SAL* | |
Sale | SALE | |
Salutation | SLTN | |
Same | SM | |
Save | SAVE | |
Scale | SCAL | |
Schedule* Scheduled Scheduling |
SCHED* | |
Scholar Scholarship |
SCHLR | |
Scholastic School |
SCHL | |
Scholastic Aptitude Test | SAT | |
Science | SCI | |
Score | SCR | A number that expresses merit or performance |
Screen | SCRN | |
Search | SRCH | |
Second | SCND SS |
Use "SCND" for field names relating to number two in a countable series Use "SS" for field names relating to a duration of time expressed in seconds |
Section | SCTN | |
Secure Security* |
SEC* | |
Segment | SEG | |
Select* Selection Selective |
SEL* | |
Semester | SEM | |
Semi Finalist | SEMF | |
Senate Senator |
SEN | |
Send | SND | |
Senior | SR | |
Sent | SNT | |
Separate | SEPR | |
Sequence* | SEQ* | |
Serial | SERL | |
Service | SERV | |
Session* | SESSN* | |
Sex | SEX | |
Sharing | SHR | |
Sheet | SHET | |
Shelter | SHLT | |
Shift | SHFT | |
Shipping | SHIP | |
Short | SHRT | |
Sign | SGN | |
Simulated | SIM | |
Site | SITE | |
Size | SZ | |
Skill | SKL | |
Skip | SKP | |
Social Society |
SOC | |
Social Security Number | SSN | |
Soft | SFT | |
Solid | SLID | |
Sophomore | SOPH | |
Sort | SRT | |
Source | SRC | |
Special Specialty |
SPCL | |
Specific Specification |
SPEC | |
Sponsor Sponsored |
SPON | |
Sports | SPRT | |
Spouse | SPSE | |
Square | SQ | |
Stack | STCK | |
Staff | STF | |
Stage | STG | |
Stamp | STMP | |
Standard | STD | |
Standard Deviation | STDV | |
Start Starting |
STRT | |
State | ST | |
Statement | STMT | |
Static | STC | |
Statistics* | STAT* | |
Status | STS | |
Step | STP | |
Stipend | STPD | |
Stock | STK | |
Stop | STOP | |
Street | STR | |
String | STRG | |
Structure | STRC | |
Student | STU | |
Student Academic Records | SAR | |
Student Credit Hour | SCH | |
Study | STDY | |
Subcampaign | SCMP | |
Subject | SUBJ | |
Subordinate | SUB | |
Subsidiary | SUBS | |
Suffix | SFX | |
Summation Summary* |
SUM* | |
Supervisor* Support |
SUP* | |
Supplement Supplemental* |
SUPL* | |
Survey | SRVY | |
Suspense | SUSP SUSPN |
|
Switch | FLG SW |
Data which functions as a flag or indicator. Used with only two possible states/conditions. Data should normally be "Y" or "N". |
System | SYS | |
Table Tables |
TBL | |
Taken | TKN | |
Tape | TAPE | |
Target | TRGT | |
Taught | TGHT | |
Tax Taxable |
TX | |
Tax ID Number | TIN | |
Team | TEAM | |
Temperature | TEMP | |
Template* | TMPL* | |
Temporary | TMP | |
Tenure | TENR | |
Term | TRM | |
Terminal | TRML | |
Terminate | TRMT | |
Test | TST | |
Text | TXT | Narrative informational data such as a message or error text |
Thermidor | THERM | 13th Month |
TIAA | TIAA | |
Ticket | TKT | |
Time | TM | Hours and minutes. May include seconds, hundredths of seconds. |
Time keeping | TMKP | |
Time-stamp | TS | A system generated Time-stamp |
Title | TITL | |
Today | TDY | |
Total* | TOT* | |
Tour | TOUR | |
Town | CTY | |
Track Tracking |
TRK | |
Traditional | TRAD | |
Training* | TRN* | |
Transact Transaction* |
TRANS* | |
Transcript | TSCP | |
Transfer* | XFER* | |
Translate Translation |
XLT | Meaning "Crosswalk Table" |
Transmit Transmittal |
XMIT | |
Travel | TRVL | |
Tuition* | TUIT* | |
Type | TYP | |
Undergraduate | UGRD | |
Unemployment | UNEMPL | |
Unit | UNIT | |
Unit of Measure* | UOM* | |
Universal | UNVRSL | |
University | UNIV | |
Unpaid | UNPD | |
Unsecure Unsecured |
UNSEC | |
Up To | MAX | |
Update Updated |
UPDT | |
Upper | UPR | |
US Department of Education | USDE | |
Use Used |
USE | |
User | USR | |
Vacation* | VACN* | |
Valedictorian | VLDC | |
Valid Validate Validation |
VLD | |
Value | VAL | |
Variable | VAR | |
Vehicle* | VEH* | |
Vendor | VEND | |
Verbal | VRBL | |
Verify Verified |
VERF | |
Veteran | VET | |
Vice President | VP | |
Violation | VIO | |
Visa | VISA | |
Visit | VST | |
Voucher | VCHR | |
W2 | W2 | |
W4 | W4 | |
W9 | W9 | |
Waived | WVED | |
Week Work Worked Worker(s) |
WK | |
Width | WID | |
With | W | Normally used as part of a compound word (i.e., Withdrawl abbreviated as "WDRL"). |
Withdrawal | WDRL | |
Withhold Withholding |
WHLD | |
Women | WMN | |
Worksheet | WKST | |
Write Written |
WRT | |
Year* | YR* YY* |
A calendar year, including century (e.g., 1997) |
Year-to-Date* | YTD* | |
Zip | ZIP | |
Zone | ZN |
C#SESSION丢失问题的解决办法
关于c# SESSION丢失问题解决办法
我们在用C#开发程序的时候经常会遇到Session很不稳定,老是数据丢失。下面就是Session数据丢失的解决办法希望对您有好处。
1、在WEB.CONFIG文件中修改SESSION状态保存模式,如:
2、启动系统服务“ASP.NET状态服务 ”,系统默认是手动启动的
3、如果SESSION中保存的数据类型是自定义的,如结构,请在自定义数据类型处序列化会话状态,即在类或结构申明前加[Serializable]
完成以上3部,状态即可保存,但是在访问页面是浏览器显示的路径中增加了一段字符,如:(S(lto3j0eg25cztmqtxevm5tb4))
最近在做ASP.NET项目时,测试网站老是取不出Session中的值,在网上搜索了一下,找到一些解决方法,记录在这里。最后使用存储在StateServer中的办法解决了问题。
SessionState 的Timeout),其主要原因有三种。
一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。
二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。
三:程序有框架页面和跨域情况。
第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)
第二种是检查代码有无Session.Abandon()之类的。
第三种是在Window服务中将ASP.NET State Service 启动。
下面是帮助中的内容:
(ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconsessionstate.htm)
ASP.NET 提供一个简单、易于使用的会话状态模型,您可以使用该模型跨多个 Web 请求存储任意数据和对象。它使用基于字典的、内存中的对象引用(这些对象引用存在于 IIS 进程中)缓存来完成该操作。使用进程内会话状态模式时请考虑下面的限制:
使用进程内会话状态模式时,如果 aspnet_wp.exe 或应用程序域重新启动,则会话状态数据将丢失。这些重新启动通常会在下面的情况中发生:
在应用程序的 Web.config 文件的
修改 Global.asax 或 Web.config 文件。
更改到 Web 应用程序的 \Bin 目录。
用杀毒软件扫描并修改 Global.asax 文件、Web.config 文件或 Web 应用程序的 \Bin 目录下的文件。
如果在应用程序的 Web.config 文件的
还有这二种:
一:在第一个页面置了SESSION,然后REDIRECT去第二个页面。解决方法是在REDIRECT中设置endResponse为FALSE。
二: ASP.NET中使用了ACCESS数据库,而且数据库是放在bin目录中的。解决方法是不要放会更新的文件在BIN目录中。
参考:http://www.dotnet247.com/247reference/msgs/58/290316.aspx
Asp.net 默认配置下,Session莫名丢失的原因及解决办法
正常操作情况下Session会无故丢失。因为程序是在不停的被操作,排除Session超时的可能。另外,Session超时时间被设定成60分钟,不会这么快就超时的。
这次到CSDN上搜了一下帖子,发现好多人在讨论这个问题,然后我又google了一下,发现微软网站上也有类似的内容。
现在我就把原因和解决办法写出来。
原因:
由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下:
我们会发现sessionState标签中有个属性mode,它可以有3种取值:InProc、StateServer?SQLServer(大小写敏感) 。默认情况下是InProc,也就是将Session保存在进程内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),这个进程不稳定,在某些事件发生时,进程会重起,所以造成了存储在该进程内的Session丢失。
哪些情况下该进程会重起呢?微软的一篇文章告诉了我们:
1、配置文件中processModel标签的memoryLimit属性
2、Global.asax或者Web.config文件被更改
3、Bin文件夹中的Web程序(DLL)被修改
4、杀毒软件扫描了一些.config文件。
更多的信息请参考PRB: Session variables are lost intermittently in ASP.NET applications
解决办法:
前面说到的sessionState标签中mode属性可以有三个取值,除了InProc之外,还可以为StateServer、SQLServer。这两种存Session的方法都是进程外的,所以当aspnet_wp.exe重起的时候,不会影响到Session。
现在请将mode设定为StateServer。StateServer是本机的一个服务,可以在系统服务里看到服务名为ASP.NET State Service的服务,默认情况是不启动的。当我们设定mode为StateServer之后,请手工将该服务启动。
这样,我们就能利用本机的StateService来存储Session了,除非电脑重启或者StateService崩掉,否则Session是不会丢的(因Session超时被丢弃是正常的)。
除此之外,我们还可以将Session通过其他电脑的StateService来保存。具体的修改是这样的。同样还在sessionState标签中,有个stateConnectionString='tcpip=127.0.0.1:42424'属性,其中有个ip地址,默认为本机(127.0.0.1),你可以将其改成你所知的运行了StateService服务的电脑IP,这样就可以实现位于不同电脑上的Asp.net程序互通Session了。
如果你有更高的要求,需要在服务期重启时Session也不丢失,可以考虑将mode设定成SQLServer,同样需要修改sqlConnectionString属性。关于使用SQLServer保存Session的操作,请访问这里。
在使用StateServer或者SQLServer存储Session时,所有需要保存到Session的对象除了基本数据类型(默认的数据类型,如int、string等)外,都必须序列化。只需将[Serializable]标签放到要序列化的类前就可以了。
如:
[Serializable]
public class MyClass
......
}
在C#中INTERFACE与ABSTRACT CLASS的区别
1)在继承抽象类时,必须覆盖该类中的每一个抽象方法,而每个已实现的方法必须和抽象类中指定的方法一样,接收相同数目和类型的参数,具有同样的返回值,这一点与接口相同。
2)当父类已有实际功能的方法时,该方法在子类中可以不必实现,直接引用的方法,子类也可以重写该父类的方法(继承的概念)。
3)而实现 (implement)一个接口(interface)的时候,是一定要实现接口中所定义的所有方法,而不可遗漏任何一个。
4)另外,抽象类不能产生对象的,但可以由它的实现类来声明对象。
A. 两者都是抽象类,都不能实例化。
B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。2. 不同
A. interface需要实现,要用implements,而abstract class需要继承,要用extends。
B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。
C. interface强调特定功能的实现,而abstract class强调所属关系。
D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration, 没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。这个选择有两点含义:
一是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子类必须实现。那些没有abstract的方法,在Abstrct class中必须定义方法体。
二是abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。既是抽象类,当然也不能实例化。
E. abstract class是interface与Class的中介。
interface是完全抽象的,只能声明方法,而且只能声明pulic的方法,不能声明private及protected的方法,不能定义方法体,也不能声明实例变量。然而,interface却可以声明常量变量,并且在JDK中不难找出这种例子。但将常量变量放在interface中违背了其作为接口的作用而存在的宗旨,也混淆了interface与类的不同价值。如果的确需要,可以将其放在相应的abstract class或Class中。
abstract class在interface及Class中起到了承上启下的作用。一方面,abstract class是抽象的,可以声明抽象方法,以规范子类必须实现的功能;另一方面,它又可以定义缺省的方法体,供子类直接使用或覆盖。另外,它还可以定义自己的实例变量,以供子类通过继承来使用。3. interface的应用场合
A. 类与类之前需要特定的接口进行协调,而不在乎其如何实现。
B. 作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。
C. 需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。
D. 需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。4. abstract class的应用场合
一句话,在既需要统一的接口,又需要实例变量或缺省的方法的情况下,就可以使用它。最常见的有:
A. 定义了一组接口,但又不想强迫每个实现类都必须实现所有的接口。可以用abstract class定义一组方法体,甚至可以是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。
B. 某些场合下,只靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的变量来区别不同的关系。abstract的中介作用可以很好地满足这一点。
C. 规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能。
概念引入
●什么是接口?
接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。接口方法不能包含任何实现,CLR允许接口可以包含事件、属性、索引 器、静态方法、静态字段、静态构造函数以及常数。但是注意:C#中不能包含任何静态成员。一个类可以实现多个接口,当一个类继承某个接口时,它不仅要实现 该接口定义的所有方法,还要实现该接口从其他接口中继承的所有方法。
定义方法为:
以下为引用的内容:
public interface System.IComparable
{
int CompareTo(object o);
}
public class TestCls: IComparable
{
public TestCls()
{
}
private int _value;
public int Value
{
get { return _value; }
set { _value = value; }
}
public int CompareTo(object o)
{
//使用as模式进行转型判断
TestCls aCls = o as TestCls;
if (aCls != null)
{
//实现抽象方法
return _value.CompareTo(aCls._value);
}
}
}
●什么是抽象类?
抽象类提供多个派生类共享基类的公共定义,它既可以提供抽象方法,也可以提供非抽象方法。抽象类不能实例化,必须通过继承由派生类实现其抽象方法, 因此对抽象类不能使用new关键字,也不能被密封。如果派生类没有实现所有的抽象方法,则该派生类也必须声明为抽象类。另外,实现抽象方法由 overriding方法来实现。
定义方法为:
以下为引用的内容:
///
/// 定义抽象类
///
abstract public class Animal
{
//定义静态字段
static protected int _id;
//定义属性
public abstract static int Id
{
get;
set;
}
//定义方法
public abstract void Eat();
//定义索引器
public string this[int i]
{
get;
set;
}
}
///
/// 实现抽象类
///
public class Dog: Animal
{
public static override int Id
{
get {return _id;}
set {_id = value;}
}
public override void Eat()
{
Console.Write("Dog Eats.")
}
}
3. 相同点和不同点
3.1 相同点
●都不能被直接实例化,都可以通过继承实现其抽象方法。
●都是面向抽象编程的技术基础,实现了诸多的设计模式。
3.2 不同点
●接口支持多继承;抽象类不能实现多继承。
●接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。
●接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。
●接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。
●接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。
●接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。
通过相同与不同的比较,我们只能说接口和抽象类,各有所长,但无优略。在实际的编程实践中,我们要视具体情况来酌情量才,但是以下的经验和积累,或 许能给大家一些启示,除了我的一些积累之外,很多都来源于经典,我相信经得起考验。所以在规则与场合中,我们学习这些经典,最重要的是学以致用,当然我将 以一家之言博大家之笑,看官请继续。
3.3 规则与场合
1.请记住,面向对象思想的一个最重要的原则就是:面向接口编程。
2.借助接口和抽象类,23个设计模式中的很多思想被巧妙的实现了,我认为其精髓简单说来就是:面向抽象编程。
3.抽象类应主要用于关系密切的对象,而接口最适合为不相关的类提供通用功能。
4.接口着重于CAN-DO关系类型,而抽象类则偏重于IS-A式的关系;
5.接口多定义对象的行为;抽象类多定义对象的属性;
6.接口定义可以使用public、protected、internal 和private修饰符,但是几乎所有的接口都定义为public,原因就不必多说了。
7.“接口不变”,是应该考虑的重要因素。所以,在由接口增加扩展时,应该增加新的接口,而不能更改现有接口。
8.尽量将接口设计成功能单一的功能块,以.NET Framework为例,IDisposable、IDisposable、IComparable、IEquatable、IEnumerable等都只包含一个公共方法。
9.接口名称前面的大写字母“I”是一个约定,正如字段名以下划线开头一样,请坚持这些原则。
10.在接口中,所有的方法都默认为public。
11. 如果预计会出现版本问题,可以创建“抽象类”。例如,创建了狗(Dog)、鸡(Chicken)和鸭(Duck),那么应该考虑抽象出动物 (Animal)来应对以后可能出现风马牛的事情。而向接口中添加新成员则会强制要求修改所有派生类,并重新编译,所以版本式的问题最好以抽象类来实现。
12.从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。
13.对抽象类不能使用new关键字,也不能被密封,原因是抽象类不能被实例化。
14.在抽象方法声明中不能使用 static 或 virtual 修饰符。
以上的规则,我就厚颜无耻的暂定为T14条吧,写的这么累,就当一时的奖赏吧。大家也可以互通有无,我将及时修订。
4. 经典示例
4.1 绝对经典
.NET Framework是学习的最好资源,有意识的研究FCL是每个.NET程序员的必修课,关于接口和抽象类在FCL中的使用,我有以下的建议:
1.FCL对集合类使用了基于接口的设计,所以请关注System.Collections中关于接口的设计实现;
2.FCL对数据流相关类使用了基于抽象类的设计,所以请关注System.IO.Stream类的抽象类设计机制。
4.2 别样小菜
下面的实例,因为是我的理解,因此给经典打上“相对”的记号,至于什么时候晋升为“绝对”,就看我在.NET追求的路上,是否能够一如既往的如此执 着,因此我将把相对重构到绝对为止(呵呵)。 本示例没有阐述抽象类和接口在设计模式中的应用,因为那将是另一篇有讨论价值的文本,本文着眼与概念和原则的把握,但是真正的应用来自于具体的需求规范。
设计结构如图所示:
1. 定义抽象类
以下为引用的内容:
public abstract class Animal
{
protected string _name;
//声明抽象属性
public abstract string Name
{
get;
}
//声明抽象方法
public abstract void Show();
//实现一般方法
public void MakeVoice()
{
Console.WriteLine("All animals can make voice!");
}
}
2. 定义接口
以下为引用的内容:
public interface IAction
{
//定义公共方法标签
void Move();
}
3. 实现抽象类和接口
以下为引用的内容:
public class Duck : Animal, IAction
{
public Duck(string name)
{
_name = name;
}
//重载抽象方法
public override void Show()
{
Console.WriteLine(_name + " is showing for you.");
}
//重载抽象属性
public override string Name
{
get { return _name;}
}
//实现接口方法
public void Move()
{
Console.WriteLine("Duck also can swim.");
}
}
public class Dog : Animal, IAction
{
public Dog(string name)
{
_name = name;
}
public override void Show()
{
Console.WriteLine(_name + " is showing for you.");
}
public override string Name
{
get { return _name; }
}
public void Move()
{
Console.WriteLine(_name + " also can run.");
}
}
4. 客户端实现
以下为引用的内容:
public class TestAnmial
{
public static void Main(string [] args)
{
Animal duck = new Duck("Duck");
duck.MakeVoice();
duck.Show();
Animal dog = new Dog("Dog");
dog.MakeVoice();
dog.Show();
IAction dogAction = new Dog("A big dog");
dogAction.Move();
}
}
5. 他山之石
正所谓真理是大家看出来的,所以将园子里有创新性的观点潜列于此,一是感谢大家的共享,二是完善一家之言的不足,希望能够将领域形成知识,受用于我,受用于众。
●[url=]dunai[/url]认为:抽象类是提取具体类的公因式,而接口是为了将一些不相关的类“杂凑”成一个共同的群体。至于他们在各个语言中的句法,语言细节并不是我关心的重点。
●桦山涧的收藏也很不错。
●Artech认为:所代码共用和可扩展性考虑,尽量使用Abstract Class。当然接口在其他方面的优势,我认为也不可忽视。
●shenfx认为:当在差异较大的对象间寻求功能上的共性时,使用接口;当在共性较多的对象间寻求功能上的差异时,使用抽象基类。
最后,MSDN的建议是:
●如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单易行的方法来控制组件版本。通过更新基类,所有继承类都随更改自动更新。另一方面,接口一旦创建就不能更改。如果需要接口的新版本,必须创建一个全新的接口。
●如果创建的功能将在大范围的全异对象间使用,则使用接口。抽象类应主要用于关系密切的对象,而接口最适合为不相关的类提供通用功能。
●如果要设计小而简练的功能块,则使用接口。如果要设计大的功能单元,则使用抽象类。
●如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。抽象类允许部分实现类,而接口不包含任何成员的实现。
6. 结论
接口和抽象类,是论坛上、课堂间讨论最多的话题之一,之所以将这个老话题拿出来再议,是因为从我的体会来说,深刻的理解这两个面向对象的基本内容, 对于盘活面向对象的抽象化编程思想至关重要。本文基本概况了接口和抽象类的概念、异同和使用规则,从学习的观点来看,我认为这些总结已经足以表达其核心。 但是,对于面向对象和软件设计的深入理解,还是建立在不断实践的基础上,Scott说自己每天坚持一个小时用来写Demo,那么我们是不是更应该勤于键盘 呢。对于接口和抽象类,请多用而知其然,多想而知其奥吧。
SQL命令语句小技巧
1.[ ]的使用
当我们所要查的表是系统关键字或者表名中含有空格时,需要用[]括起来,例如新建了两个表,分别为user,user info,那么select * from user和select * from user info就要报错,需要写成:select * from [user] 和 select * from [user info],不过千万不要因为有[]的帮助,就随意起名了,那是自找麻烦,不过我确实看到有人把用户表起名为user的。
2.NULLIF函数
NULLIF(Expression1,Expression2):给定两个参数Expression1和Expression2,如果两个参数相等,则返回NULL;否则就返回第一个参数。
等价于:Case WHEN Expression1=Expression2 Then NULL ELSE Expression1。
例如Select NULLIF(1,1)返回NULL,Select NULLIF(1,2)返回1。
有一个实际的应用,例如防止除0操作的放生,可以使用a/NULLIF(b,0),这样就不怕b是0了,当然除0操作也可以通过别的方式判断。
3.NULL
NULL是个神奇的东西,表示空值,未知值,任何数与它加减乘除都返回NULL。
4.ISNULL函数
ISNULL(Expression1,Expression2):给定两个参数Expression1和Expression2,如果Expression1是NULL,那么返回Expression2,否则返回Expression1。
等价于:Case WHEN Expression1 is NULL Then Expression2 ELSE Expression1。
例如Select ISNULL(NULL,1)返回1,Select ISNULL(1,2)返回1。
有一个实际的应用,可以对空值进行默认值替代,例如SELECT ISNULL(email,'没有填写email') from table1,所有email为null的,用'没有填写email'来替代。
5.COALESCE函数
COALESCE(Expression1,Expression2,Expression3,......):接受一系列的表达式或列,返回第一个非空的值。
例如SELECT COALESCE(NULL,NULL,4,NULL,NULL,5),那么返回4,如果里面的参数都为NULL,那么会报错。
6.WITH TIES
与top()和order by 一起用,可以返回多于top的行。防止丢失想要的信息。
如果按照order by 参数排序TOP n(PERCENT)返回了前面n(pencent)个记录,
但是n+1…n+k条记录和排序后的第n条记录的参数值(order by 后面的参数)相同,
则n+1、…、n+k也返回。n+1、…、n+k就是额外的返回值
例如:有个表table1
(1)select * from table1 order by name desc :结果如下:
(2)select top(3) * from table1 order by name desc:结果如下:(只有三条)
(3)select top(3) with ties * from table1 order by name desc:结果如下:
7.ORDER BY NEWID():返回随机排序结果。
8.BETWEEN a AND b:返回大于等于a,小于等于b的结果。如果a>b,那么返回NULL。
9.不要在where条件中使用函数,会强制每一行都计算该函数,无法使用索引查找。
例如:select * from table1 where id+3>5和select * from table1 where id>5-3,后者效率比前者高。
10.许多以_desc结尾的列,是为了更友好的表示一个列的含义。
例如:SELECT * FROM sys.databases
11.推荐一个小插件,SQL Prompt,配合Microsoft SQL Server Management Studio,使用起来非常方便,同时再加上以下几个快捷键:
(1)ctrl+5或F5,运行代码,如果想运行特定的语句,那么只是选中该语句,然后F5或ctrl+E即可。
(2)ctrl+L:显示执行计划。
(3)ctrl+R:显示隐藏下面的结果窗口,增大自己书写sql的空间。
(4)ctrl+K,然后按Y,格式化SQL代码。
JQUERY判断CHECKBOX是否选中三种方法
方法一:
if ($("#checkbox-id")get(0).checked) {
// do something
}
方法二:
if($('#checkbox-id').is(':checked')) {
// do something
}
方法三:
if ($('#checkbox-id').attr('checked')) {
// do something
}
JS中!=、==、!==、===的用法和区别
1、对于string,number等基础类型,==和===是有区别的
var num = 1; var str = '1'; var test = 1; test == num //true 相同类型 相同值 test === num //true 相同类型 相同值 test !== num //false test与num类型相同,其值也相同, 非运算肯定是false num == str //true 把str转换为数字,检查其是否相等。 num != str //false == 的 非运算 num === str //false 类型不同,直接返回false num !== str //true num 与 str类型不同 意味着其两者不等 非运算自然是true啦
== 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 。
在对象比较中,对象相等和对象一致分别指的是什么?
对象数据存内存堆里,对象一致即内存堆相同,对象相等为哈希表中键同值可能不同
简单的讲:相等性(quality)就是两个对象,它们的值相等。同一性(identity)就是指引用的是否为同一个对象。 下面是我的读书笔记: C# 中有两种不同的相等:引用相等和值相等。值相等是大家普遍理解的意义上的相等:它意味着两个对象包含相同的值。例如,两个值为 2 的整数具有值相等性。
引用相等意味着要比较的不是两个对象,而是两个对象引用,这两个对象引用所引用的是同一个对象。我们这里把值相等叫做对象的“相等性(equality)”,把引用相等叫做对象的同一性(identity)。
我们都知道在System.Object类型中提供了一个名为Equals的虚方法,它的作用是在两个对象相等的情况下返回true,不相等时返回false。等等,这里的说的“相等”是哪个?是“相等性(equality)”还是“同一性(identity)”。
好吧,来看一下代码吧,System的Object方法是像下面这样实现的:
public class Object { public virtual Boolean Equals(Object obj)
{
// 如果两个引用指向的是同一个对象,那么它们肯定相等
if (this == obj) return true;
// 假定对象不相等
return false;
}
}
表明上看它好像是实现的很合理:
假如this和Obj引用同一对象,自然就是true了,因为Equals知道一个对象肯定等于它自身。
然而,如果this和Obj引用不同的对象哪?,Equals就不能肯定对象是否包含相同的值,
所以总结一句话就是:Object的Equals方法实现的只是“同一性(identity)”,而不是“相等性(equality)”。
多么的令人遗憾啊~!Object的Equals的默认实现并不合理,既然不合理我们就来重写它吧,先来看看如何在内部正确实现一个Equals方法(我把它概括为四个字——空、型、值、基):
如果obj参数为null,就返回false;
如果this和obj参数引用不同的类型对象,返回false;
针对类型定义的每个实例字段,将this对象的值和obj对象的值进行对比,任何字段不相等,就返回false;
调用基类的Equals方法,以便比较它定义的任何字段。如果基类的Equals方法返回false,就返回false;否则返回true;
再来看一下Object的Equals方法的实现代码:
public class Object
{
public virtual Boolean Equals(Object obj)
{
if (obj == null)
return false;
if (this.GetType() != obj.GetType())
return false;
// 如果对象属于相同的类型,那么在它们的多有字段都匹配的前提下返回true
// 由于System.Object没有定义任何字段,所以字段是匹配的
return true;
}
}
其实,这里要说一下,Microsoft并没有这样去实现他的代码,而是要比这个复杂的多的多。
那么Equals方法可以在子类中重写,那么就不可以用Equals方法来测试同一性(identity)了。怎么办啊?
Microsoft在Object中提供了一个静态方法ReferenceEquals,其原型如下:
public class Object
{
public static Boolean ReferenceEquals(Object objA, object objB)
{
return (objA == objB);
}
}
注意了啊,如果想要检查同一性(identity),那么务必调用ReferenceEquals,而不应该使用C#的==操作符(除非事先把它们转化为Object类型),
原因是其中某个操作数的类型可能重载了==操作符,为其赋予了其它语义。
另外,System.ValueType重写了Object的Equals方法。并进行了正确的实现来执行相等性(equality)检查,而不是同一性(identity)检查。
在内部,ValueType的Equals方法是像这样实现的:
如果obj参数为null,返回false; 如果this和obj引用的不同类型的对象,返回false;
针对类型定义的每个实例字段,都将this对象的值和obj对象中的值进行比较。
如果有字段不相等,就返回false; 返回true;
ValueType的Equals的方法不会调用Object的Equals方法。
顺便说一下,ValueType的Equals方法是通过反射技术来完成的。由于CLR反射机制较慢,所以在定义自己的值类型时,应该重写Equals方法,并提供自己的实现,以便提高性能。当然在自己的实现中不要调用base.Equals。
要重写Equals,必须遵循一下几点特性: x.Equals(x) 返回 true。 (自反性) x.Equals(y) 与 y.Equals(x) 返回相同的值。 (对称性) 如果 (x.Equals(y) && y.Equals(z)) 返回 true,则 x.Equals(z) 返回 true。 (传递性) 只要不修改 x 和 y 所引用的对象,x.Equals(y) 的后续调用就返回相同的值。 (一致性) x.Equals(null) 返回 false。
对象们都住在不同的房间里,每个房间只能住一个对象.对象们都被锁在房间里,永远没有办法搬家(至少从我们讨论的角度来说,这个说法是正确的).所以如果你知道了一个对象的
房间号,就能找到对应的对象. 现在假如我们有两张名片,上面如果写着相同的房间号,我们就可以断定,这两张名片是同一个对象分发出来的,这就是同一性,也就是你所说的一致. 假如1
号房里住着一个值为1的整数对象, 2号房里住着另一个值为2的整数对象,3号房里住着另另一个值为1的整数对象.我们又有它们各自的一张名片, 那么,第一个名片和第三个对应的对
象的值是相等的,但是它们不是同一个对象,用你的词来说,也就是说它们"相等",但不"一致". 如果上面说得太清楚了,那么这里让你再困扰一会吧,哈哈: 这里的名片就是引用(i, count
之类的变量/字段等的名称); 房间所在的大楼就是内存,房间号就是内存地址. 对象就是内存里保存的数据.
对象们都住在不同的房间里,每个房间只能住一个对象.对象们都被锁在房间里,永远没有办法搬家(至少从我们讨论的角度来说,这个说法是正确的).所以如果你知道了一个对象的房间号,就能找到对应的对象.
现在假如我们有两张名片,上面如果写着相同的房间号,我们就可以断定,这两张名片是同一个对象分发出来的,这就是同一性,也就是你所说的一致.
假如1号房里住着一个值为1的整数对象, 2号房里住着另一个值为2的整数对象,3号房里住着另另一个值为1的整数对象.我们又有它们各自的一张名片, 那么,第一个名片和第三个对应的对象的值是相等的,但是它们不是同一个对象,用你的词来说,也就是说它们相等,但不一致.
如果上面说得太清楚了,那么这里让你再困扰一会吧,哈哈:
这里的名片就是引用(i, count之类的变量/字段等的名称);
房间所在的大楼就是内存,房间号就是内存地址.对象就是内存里保存的数据.