/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Explicitly implement an interface member.
using System;
interface IEven {
bool isOdd(int x);
bool isEven(int x);
}
class MyClass : IEven {
// explicit implementation
bool IEven.isOdd(int x) {
if((x%2) != 0) return true;
else return false;
}
// normal implementation
public bool isEven(int x) {
IEven o = this; // reference to invoking object
return !o.isOdd(x);
}
}
public class Demo {
public static void Main() {
MyClass ob = new MyClass();
bool result;
result = ob.isEven(4);
if(result) Console.WriteLine("4 is even.");
else Console.WriteLine("3 is odd.");
// result = ob.isOdd(); // Error, not exposed
}
}
ASP.NET & Csharp (C#)
ASP.NET & Csharp (C#) , Here you can find my posts about .NET c# .
One interface can inherit another
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// One interface can inherit another.
using System;
public interface A {
void meth1();
void meth2();
}
// B now includes meth1() and meth2() -- it adds meth3().
public interface B : A {
void meth3();
}
// This class must implement all of A and B
class MyClass : B {
public void meth1() {
Console.WriteLine("Implement meth1().");
}
public void meth2() {
Console.WriteLine("Implement meth2().");
}
public void meth3() {
Console.WriteLine("Implement meth3().");
}
}
public class IFExtend {
public static void Main() {
MyClass ob = new MyClass();
ob.meth1();
ob.meth2();
ob.meth3();
}
}
Add an indexer in an interface
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Add an indexer in an interface.
using System;
public interface ISeries {
// an interface property
int next {
get; // return the next number in series
set; // set next number
}
// an interface indexer
int this[int index] {
get; // return the specified number in series
}
}
// Implement ISeries.
class ByTwos : ISeries {
int val;
public ByTwos() {
val = 0;
}
// get or set value using a property
public int next {
get {
val += 2;
return val;
}
set {
val = value;
}
}
// get a value using an index
public int this[int index] {
get {
val = 0;
for(int i=0; i
Use a property in an interface
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Use a property in an interface.
using System;
public interface ISeries {
// an interface property
int next {
get; // return the next number in series
set; // set next number
}
}
// Implement ISeries.
class ByTwos : ISeries {
int val;
public ByTwos() {
val = 0;
}
// get or set value
public int next {
get {
val += 2;
return val;
}
set {
val = value;
}
}
}
// Demonstrate an interface property.
public class SeriesDemo3 {
public static void Main() {
ByTwos ob = new ByTwos();
// access series through a property
for(int i=0; i < 5; i++)
Console.WriteLine("Next value is " + ob.next);
Console.WriteLine("
Starting at 21");
ob.next = 21;
for(int i=0; i < 5; i++)
Console.WriteLine("Next value is " + ob.next);
}
}
[/csharp]
Demonstrate the ByTwos interface 2
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
using System;
public interface ISeries {
int getNext(); // return next number in series
void reset(); // restart
void setStart(int x); // set starting value
}
// Use ISeries to generate a sequence of even numbers.
class ByTwos : ISeries {
int start;
int val;
public ByTwos() {
start = 0;
val = 0;
}
public int getNext() {
val += 2;
return val;
}
public void reset() {
val = start;
}
public void setStart(int x) {
start = x;
val = start;
}
}
// Use ISeries to implement a series of prime numbers.
class Primes : ISeries {
int start;
int val;
public Primes() {
start = 2;
val = 2;
}
public int getNext() {
int i, j;
bool isprime;
val++;
for(i = val; i < 1000000; i++) {
isprime = true;
for(j = 2; j < (i/j + 1); j++) {
if((i%j)==0) {
isprime = false;
break;
}
}
if(isprime) {
val = i;
break;
}
}
return val;
}
public void reset() {
val = start;
}
public void setStart(int x) {
start = x;
val = start;
}
}
public class SeriesDemo2 {
public static void Main() {
ByTwos twoOb = new ByTwos();
Primes primeOb = new Primes();
ISeries ob;
for(int i=0; i < 5; i++) {
ob = twoOb;
Console.WriteLine("Next ByTwos value is " +
ob.getNext());
ob = primeOb;
Console.WriteLine("Next prime number is " +
ob.getNext());
}
}
}
[/csharp]
Demonstrate the ByTwos interface
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
using System;
public interface ISeries {
int getNext(); // return next number in series
void reset(); // restart
void setStart(int x); // set starting value
}
// Implement ISeries.
class ByTwos : ISeries {
int start;
int val;
public ByTwos() {
start = 0;
val = 0;
}
public int getNext() {
val += 2;
return val;
}
public void reset() {
val = start;
}
public void setStart(int x) {
start = x;
val = start;
}
}
// Demonstrate the ByTwos interface.
public class SeriesDemo {
public static void Main() {
ByTwos ob = new ByTwos();
for(int i=0; i < 5; i++) Console.WriteLine("Next value is " + ob.getNext()); Console.WriteLine(" Resetting"); ob.reset(); for(int i=0; i < 5; i++) Console.WriteLine("Next value is " + ob.getNext()); Console.WriteLine(" Starting at 100"); ob.setStart(100); for(int i=0; i < 5; i++) Console.WriteLine("Next value is " + ob.getNext()); } } [/csharp]
Interface with method name conflicts
using System;
public delegate void AlarmEvent(IAlarm sender);
public interface IAlarm {
event AlarmEvent IssueAlarm;
}
abstract class MyStuff : ICloneable {
public object Clone() {
return null;
}
public void DoStuff() {
}
}
interface IFoo {
void DoStuff();
}
interface IBar {
void DoStuff();
}
interface ITest {
void DoSomething();
int DoSomethingElse();
}
class MyClass : IFoo, IBar {
void IFoo.DoStuff() {
}
void IBar.DoStuff() {
}
}
class MainClass : IComparable {
public int CompareTo(object other) {
return -1;
}
static int Main(string[] args) {
MainClass c = new MainClass();
MainClass c2 = new MainClass();
if (c.CompareTo(c2) == 0)
return 0;
MyClass c3 = new MyClass();
return 1;
}
}