C\#중 is,as,using 키워드 사용 설명
C\#에서 is,as,using 키 워드 는 그 특징 과 사용 장면 을 가지 고 있 습 니 다.그 중에서 is 키 워드 는 이 대상 이 주어진 유형 과 호 환 되 는 지 확인 하 는 데 사 용 됩 니 다.as 키 워드 는 대상 을 지정 한 유형 으로 전환 하 는 데 사 용 됩 니 다.using 키 워드 는 네 임 스페이스 를 도입 하 는 것 외 에 도 이미지 자원,예 를 들 어 파일 자원,네트워크 자원 과 데이터 베이스 자원 등 을 회수 합 니 다.
1.is:대상 이 주어진 형식 과 호 환 되 는 지 확인 하 는 데 사 용 됩 니 다.호 환 되면 true 로 돌아 갑 니 다.그렇지 않 으 면 false 로 돌아 가 이상 을 던 지지 않 습 니 다.유형 전환 을 하기 전에 대상 이 주어진 유형 과 호 환 되 는 지 is 로 판단 하고 호 환 되면 전환 할 수 있 습 니 다.
사례:
string str ="test";
object obj = str;
if(obj is string) {string str2 = (string)obj};
2.as:참조 형식 간 전환 에 사용 되 며,직접 변환 에 성공 하면 변환 후의 대상 을 되 돌려 줍 니 다.변환 에 실패 하면 null 로 돌아 가 이상 을 던 지지 않 습 니 다.사례:
string str ="test";
object obj = str;
string str2 = obj as tring;
if(str2 !=null) { }
3.using:네 임 스페이스 를 참조 하여 자원 을 효과적으로 회수 합 니 다.using 키 워드 는 여러 대상 의 자원 을 회수 할 수 있 습 니 다.키워드 뒤의 작은 괄호 안에 만 든 대상 은 반드시 IDisposable 인 터 페 이 스 를 실현 해 야 하거나 이러한 기본 클래스 는 IDisposable 인 터 페 이 스 를 실현 해 야 합 니 다.자원 을 회수 하 는 시 기 는 using 키워드 아래 코드 블록 이 실 행 된 후 인터페이스 방법 Dispose()를 자동 으로 호출 하여 대상 을 소각 하 는 것 입 니 다.사례:
using (Test test =new Test()) { ;}
calss Test :IDisposable {
public void Dispose() { ;}
}
코드 사례
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace test1
{
public partial class Form9 : Form
{
public Form9()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// object
if (obj_rdb.Checked)
{
// using ,
// FileStream IDisposable ,
using (FileStream fileStream = new FileStream(@"d:\test.txt", System.IO.FileMode.Create))
{
object obj = fileStream as object; // as
if (obj != null)
{
MessageBox.Show("FileStream object ", " ");
}
else
{
MessageBox.Show("FileStream object ", " ");
}
}
}
else
{
using (FileStream fileStream = new FileStream(@"d:\test.txt", System.IO.FileMode.Create))
{
//
try
{
Stream stream = (Stream)fileStream;
MessageBox.Show("FileStream Stream ", " ");
}catch(Exception ex)
{
MessageBox.Show(ex.Message, " ");
}
}
}
}
}
}
3.결과 표시보충 지식:c\#Constructor 구조 함수 주입
1.인터페이스 만 들 기
public interface ITimeProvider
{
DateTime CurrentDate { get; }
string CurrentYear { get; }
}
2.계승 인터페이스,구현 클래스
public class TimeProvider : ITimeProvider
{
public DateTime CurrentDate { get { return DateTime.Now; } }
public string CurrentYear { get { return DateTime.Now.Year.ToString(); } }
}
3.주입 메커니즘 만 들 기
public class Assembler
{
private static Dictionary<Type, Type> dictionary = new Dictionary<Type, Type>();
public Assembler()
{
dictionary.Add(typeof(ITimeProvider), typeof(TimeProvider));
}
public object Create(Type type)
{
if (type == null || !dictionary.ContainsKey(type)) throw new NullReferenceException();
Type targetType = dictionary[type];
return Activator.CreateInstance(targetType);
}
public T Create<T>()
{
return (T)Create(typeof(T));
}
}
4.클 라 이언 트 호출
public class Client
{
private ITimeProvider timeProvider;
public Client(ITimeProvider timeProvider)
{
this.timeProvider = timeProvider;
}
public string GetYear()
{
return timeProvider.CurrentYear .ToString();
}
public string GetDatetime()
{
return timeProvider.CurrentDate.ToString();
}
}
5.사용 실현
ITimeProvider timeProvider = (new Assembler()).Create<ITimeProvider>();
Client clinet = new Client(timeProvider);
Console.WriteLine(clinet.GetYear());
Console.WriteLine(clinet.GetDatetime());
이상 의 이 C\#중 is,as,using 키워드 의 사용 설명 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 었 으 면 좋 겠 습 니 다.여러분 들 도 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.