<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FLanguage_Basics%2Fis</id>
		<title>Csharp/C Sharp/Language Basics/is - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FLanguage_Basics%2Fis"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Language_Basics/is&amp;action=history"/>
		<updated>2026-04-30T01:43:53Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/Language_Basics/is&amp;diff=764&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Language_Basics/is&amp;diff=764&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/Language_Basics/is&amp;diff=765&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Language_Basics/is&amp;diff=765&amp;oldid=prev"/>
				<updated>2010-05-26T11:39:50Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==choose between two overloaded methods at run-time using the &amp;quot;is&amp;quot; keyword==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
public class BankAccount {&lt;br /&gt;
    virtual public void Withdraw() {&lt;br /&gt;
        Console.WriteLine(&amp;quot;Call to BankAccount.Withdraw()&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class SavingsAccount : BankAccount {&lt;br /&gt;
    override public void Withdraw() {&lt;br /&gt;
        Console.WriteLine(&amp;quot;Call to SavingsAccount.Withdraw()&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
    public static void Main(string[] strings) {&lt;br /&gt;
        BankAccount ba = new BankAccount();&lt;br /&gt;
        Test(ba);&lt;br /&gt;
        SavingsAccount sa = new SavingsAccount();&lt;br /&gt;
        Test(sa);&lt;br /&gt;
    }&lt;br /&gt;
    public static void Test(BankAccount baArgument) {&lt;br /&gt;
        if (baArgument is SavingsAccount) {&lt;br /&gt;
            SavingsAccount saArgument = (SavingsAccount)baArgument;&lt;br /&gt;
            saArgument.Withdraw();&lt;br /&gt;
        } else {&lt;br /&gt;
            baArgument.Withdraw();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==is Checker==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
class Checker {&lt;br /&gt;
    public void Check(object param1) {&lt;br /&gt;
        if (param1 is ClassA)&lt;br /&gt;
            Console.WriteLine(&amp;quot;Variable can be converted to ClassA.&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            Console.WriteLine(&amp;quot;Variable can&amp;quot;t be converted to ClassA.&amp;quot;);&lt;br /&gt;
        if (param1 is IMyInterface)&lt;br /&gt;
            Console.WriteLine(&amp;quot;Variable can be converted to IMyInterface.&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            Console.WriteLine(&amp;quot;Variable can&amp;quot;t be converted to IMyInterface.&amp;quot;);&lt;br /&gt;
        if (param1 is MyStruct)&lt;br /&gt;
            Console.WriteLine(&amp;quot;Variable can be converted to MyStruct.&amp;quot;);&lt;br /&gt;
        else&lt;br /&gt;
            Console.WriteLine(&amp;quot;Variable can&amp;quot;t be converted to MyStruct.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
interface IMyInterface {&lt;br /&gt;
}&lt;br /&gt;
class ClassA : IMyInterface {&lt;br /&gt;
}&lt;br /&gt;
class ClassB : IMyInterface {&lt;br /&gt;
}&lt;br /&gt;
class ClassC {&lt;br /&gt;
}&lt;br /&gt;
class ClassD : ClassA {&lt;br /&gt;
}&lt;br /&gt;
struct MyStruct : IMyInterface {&lt;br /&gt;
}&lt;br /&gt;
class Program {&lt;br /&gt;
    static void Main(string[] args) {&lt;br /&gt;
        Checker check = new Checker();&lt;br /&gt;
        ClassA try1 = new ClassA();&lt;br /&gt;
        ClassB try2 = new ClassB();&lt;br /&gt;
        ClassC try3 = new ClassC();&lt;br /&gt;
        ClassD try4 = new ClassD();&lt;br /&gt;
        MyStruct try5 = new MyStruct();&lt;br /&gt;
        object try6 = try5;&lt;br /&gt;
        Console.WriteLine(&amp;quot;Analyzing ClassA type variable:&amp;quot;);&lt;br /&gt;
        check.Check(try1);&lt;br /&gt;
        Console.WriteLine(&amp;quot;\nAnalyzing ClassB type variable:&amp;quot;);&lt;br /&gt;
        check.Check(try2);&lt;br /&gt;
        Console.WriteLine(&amp;quot;\nAnalyzing ClassC type variable:&amp;quot;);&lt;br /&gt;
        check.Check(try3);&lt;br /&gt;
        Console.WriteLine(&amp;quot;\nAnalyzing ClassD type variable:&amp;quot;);&lt;br /&gt;
        check.Check(try4);&lt;br /&gt;
        Console.WriteLine(&amp;quot;\nAnalyzing MyStruct type variable:&amp;quot;);&lt;br /&gt;
        check.Check(try5);&lt;br /&gt;
        Console.WriteLine(&amp;quot;\nAnalyzing boxed MyStruct type variable:&amp;quot;);&lt;br /&gt;
        check.Check(try6);&lt;br /&gt;
        Console.ReadKey();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The is operator confirms that the employee is a manager.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
&lt;br /&gt;
public class Starter {&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        Manager person = new Manager(&amp;quot;Accounting&amp;quot;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;[Menu]\n&amp;quot;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;Task 1&amp;quot;);&lt;br /&gt;
        Console.WriteLine(&amp;quot;Task 2&amp;quot;);&lt;br /&gt;
        if (person is IManager) {&lt;br /&gt;
            IManager mgr = person;&lt;br /&gt;
            Console.WriteLine(&amp;quot;\n[{0} Menu]\n&amp;quot;,mgr.Department);&lt;br /&gt;
            Console.WriteLine(&amp;quot;Task 3&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public interface IManager {&lt;br /&gt;
    string Department {&lt;br /&gt;
        get;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class Employee {&lt;br /&gt;
}&lt;br /&gt;
public class SalariedEmployee : Employee {&lt;br /&gt;
}&lt;br /&gt;
public class Manager : SalariedEmployee, IManager {&lt;br /&gt;
    public Manager(string dept) {&lt;br /&gt;
        propDepartment = dept;&lt;br /&gt;
    }&lt;br /&gt;
    private string propDepartment;&lt;br /&gt;
    public string Department {&lt;br /&gt;
        get {&lt;br /&gt;
            return propDepartment;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using the is Keyword to Work with an Interface==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
   &lt;br /&gt;
public interface IPrintMessage&lt;br /&gt;
{&lt;br /&gt;
    void Print();&lt;br /&gt;
};&lt;br /&gt;
   &lt;br /&gt;
class Class1&lt;br /&gt;
{&lt;br /&gt;
    public void Print()&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(&amp;quot;Hello from Class1!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class Class2 : IPrintMessage&lt;br /&gt;
{&lt;br /&gt;
    public void Print()&lt;br /&gt;
    {&lt;br /&gt;
        Console.WriteLine(&amp;quot;Hello from Class2!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        PrintClass   PrintObject = new PrintClass();&lt;br /&gt;
   &lt;br /&gt;
        PrintObject.PrintMessages();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class PrintClass&lt;br /&gt;
{&lt;br /&gt;
    public void PrintMessages()&lt;br /&gt;
    {&lt;br /&gt;
        Class1      Object1 = new Class1();&lt;br /&gt;
        Class2      Object2 = new Class2();&lt;br /&gt;
   &lt;br /&gt;
        PrintMessageFromObject(Object1);&lt;br /&gt;
        PrintMessageFromObject(Object2);&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    private void PrintMessageFromObject(object obj)&lt;br /&gt;
    {&lt;br /&gt;
        if(obj is IPrintMessage)&lt;br /&gt;
        {&lt;br /&gt;
            IPrintMessage PrintMessage;&lt;br /&gt;
   &lt;br /&gt;
            PrintMessage = (IPrintMessage)obj;&lt;br /&gt;
            PrintMessage.Print();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>